[英]Why is this Swing Timer code is throwing a NullPointerException?
[英]Why is this code not throwing a nullPointerException?
代碼片段如下。
我知道 String 的默認值為null
,它被分配給str
。 我不明白為什么在第一種情況下會打印null
而在其他情況下(如第二個代碼片段)不打印。
public class Case1{
static String str;
public static void main(String[] args){
System.out.println(str);
}
}
\\Code prints 'null' without quotes
public class Case2{
public static void main(String[] args){
String a[][] = { {}, null };
System.out.println(a[1][0]);
}
}
\\Code throws nullPointerException
任何解釋將不勝感激。
在您的第二個示例中,您正在做的是訪問不存在的數組的第一個值:
String a[][] = { {}, null };
所以 a[1] 是 null 值,並且沒有那個 null 的 [0]。
在您的示例中,您嘗試訪問 null 上的值。
看下面的代碼
String a[][] = { {}, null };
System.out.println(a[1]);
它會打印
null
當您嘗試訪問 null 上的第 0 個元素時,它會拋出空指針預期,因為您嘗試訪問null上的元素
String a[][] = { {}, null };
System.out.println(a[1][0]);
它將 output
Exception in thread "main" java.lang.NullPointerException
在 case1 中,您只是打印字符串並且沒有為其分配任何值,因此默認情況下會打印 null。 您無需對該字符串執行任何操作以在此處引發 NullPointerException。 因此它不會拋出任何異常。
在 case2 中,您將 null 值分配給字符串數組並嘗試使用索引獲取 null object。 因此你得到了 nullPointerException。
如果您使用以下代碼更改 case2,您也會在此處獲得 null。
public class Case2{
public static void main(String[] args){
String a[][] = new String[2][2];
a[1][0] = null;
System.out.println(a[1][0]);
}
}
\Code 打印不帶引號的“null”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.