2012-11-15 143 views
0

在下面的代码最后SOP不印制在空指针异常

String A=null; 

if (A.contains("xyz")) { 
    System.out.println("loop1"); 
} 
System.out.println(A); 

回答

4

由于A为空上面的代码会抛出一个NullPointerException (NPE),这是一个RuntimeException。

当对null执行任何调用时,将抛出异常,在您的情况下包含方法调用。

A.contains("xyz") 
+0

请参阅我对@ Nambari关于您上次声明的回答的评论。 –

+0

感谢Rohit的纠正。 –

+0

@All:其实上面代码片段是for循环,有一次它有空值,剩下的时间它有值,所以如何解决这个问题,以避免空一个被其他人接受? – b22

4

A是null,而你在null参考结果NullPointerException调用if (A.contains("xyz"))

任何调用,你不在try/catch中包含上面的语句,所以异常传播到更高级别而不执行下面的代码。

改变它的东西,如:

String A=""; 
+0

null上没有任何'operation'会抛出'NPE'。 ''xyd“.equals(null)'例如运行良好。你应该说,null上的任何调用都会抛出NPE。 –

+0

@RohitJain:好的,改了措辞。 – kosa

+0

@RohitJain:在上面的语法中,我们是否在xyd(或)null上调用equals操作?不是英语专家。我通常会认为,留下物体然后(点)并对该物体进行操作不是吗? – kosa

4
if (A.contains("xyz")) { 

由于A为空,你试图调用包含在A.因此NPE

+2

实际上,它可能发生在'if(A.contains(“xyz”))' –

+0

@TedHopp啊,我想我很着急..我编辑它虽然 – PermGenError

+0

@RohitJain是啊马恩..我想,我很着急。 – PermGenError

0

String A=null;您正在设置字符串引用A为空。在这一点上你有一个参考,但它并没有指向一个对象。然后,您尝试通过调用.contains方法来使用该引用,就像它指向一个对象一样,这将导致NullPointerException,因为在该引用指向的位置没有要执行的代码。