【发布时间】:2012-11-16 04:37:30
【问题描述】:
在下面的代码中,最后一个 sop 没有打印出来
String A=null;
if (A.contains("xyz")) {
System.out.println("loop1");
}
System.out.println(A);
【问题讨论】:
标签: java
在下面的代码中,最后一个 sop 没有打印出来
String A=null;
if (A.contains("xyz")) {
System.out.println("loop1");
}
System.out.println(A);
【问题讨论】:
标签: java
由于上面的 A 为空,代码将抛出 NullPointerException(NPE),这是一个 RuntimeException。
当对 null 执行任何调用时,将引发异常,在您的情况下是 contains 方法调用。
A.contains("xyz")
【讨论】:
A 是null,您正在呼叫if (A.contains("xyz"))
对null 的任何调用引用结果NullPointerException,您没有将上述语句包装在try/catch 中,因此异常会传播到更高级别而不执行下面的代码。
将其更改为:
String A="";
【讨论】:
null 上没有任何 operation 抛出 NPE。 "xyd".equals(null) 例如运行良好。你应该说,any invocation 在 null 上抛出 NPE。
equals 方法。
if (A.contains("xyz")) {
由于 A 为空,您正试图在 A 上调用 Contains。因此是 NPE
【讨论】:
if (A.contains("xyz"))
在String A=null; 中,您将字符串引用A 设置为null。此时你有一个引用,但它还没有指向一个对象。然后,您尝试通过调用.contains 方法来使用引用,就好像它指向一个对象一样,这将导致 NullPointerException,因为在引用指向的位置没有要执行的代码。
【讨论】: