Java 下面代码中出现空指针异常
在下面的代码中,最后一个sop没有打印出来Java 下面代码中出现空指针异常,java,Java,在下面的代码中,最后一个sop没有打印出来 String A=null; if (A.contains("xyz")) { System.out.println("loop1"); } System.out.println(A); A为null,如果(A.contains(“xyz”) 对null引用结果NullPointerException的任何调用,都不会将上述语句包装在try/catch中,因此异常会传播到更高的级别,而不会执行下面的代码 将其更改为: String A=""
String A=null;
if (A.contains("xyz")) {
System.out.println("loop1");
}
System.out.println(A);
A为
null
,如果(A.contains(“xyz”)
对null
引用结果NullPointerException
的任何调用,都不会将上述语句包装在try/catch中,因此异常会传播到更高的级别,而不会执行下面的代码
将其更改为:
String A="";
当A为null时,您试图调用A上的Contains。因此,由于上面的代码A为null,NPE将抛出一个(NPE),这是一个运行时异常 当对null执行任何调用时(在您的情况下为contains方法调用),将引发异常
A.contains("xyz")
在
字符串中,A=null代码>您正在将字符串引用A设置为null。此时您有一个引用,但它尚未指向对象。然后,通过调用.contains
方法,尝试将引用当作指向对象来使用,这将导致NullPointerException,因为引用所指向的位置中没有要执行的代码。实际上,它可能发生在if(a.contains(“xyz”))
在null
上没有任何操作
抛出NPE
<代码>“xyd”。eg的等于(null)
运行良好。您应该说,对null的任何调用
都会抛出NPE
@RohitJain:好的,更改了措辞。@RohitJain:我们是否在上述语法中调用xyd(或)null上的等于运算?不是英语专家。我通常认为,物体离开,然后。(点)对那个物体的操作不是吗?@Nambari。。是 啊你说得对。就是这样。我们在“xyd”上调用equals
方法。@RohitJain:好的,那么你的评论可能站不住脚。请参阅我对@Nambari关于你上一条语句的回答的评论。@All:实际上上面的代码段是for循环,有一次它有空值,剩下的时间是有值的,那么如何解决这个问题,从而避免使用空值,而接受其他值呢?@adityasingh在调用a上的方法之前,需要执行空值检查。这应该看起来像a!=null&&A.contains(“xyz”)@ADITYASING很高兴它对您有效。您能接受答案吗?
A.contains("xyz")