[英]Null or throw exception
public class Learner {
public static void main(String[] args) {
String[] dataArr = new String[4];
dataArr[1] = "Bill";
dataArr[2] = "Steve";
dataArr[3] = "Larry";
try{
for(String data : dataArr){
System.out.print(data+" ");
}
}catch(Exception e){
System.out.println(e.getClass());
}
}
}
這本書說這將打印:null Bill Steve Larry
這讓我感到困惑,因為我認為使用null訪問任何數據都會引發NullPointerException。 是否曾經有一次在訪問具有空值的數組時引發異常?
還是system.out.println()節省了寬限期? 您是否可以通過for循環訪問任何空值,只要您不說在其上調用data.length()?
當操作數為空引用時,在JLS中將字符串串聯定義為安全操作,即,它不會引發任何異常(如果嘗試使用.toString()
來描述對象,則為這種情況)和文本"null"
必須使用"null"
代替。
需要拆箱時不運行安全檢查:
Integer val = null;
int err = val + 1; // throws NPE
只是出於好奇,訪問空引用上的任何靜態方法甚至不需要檢查,因為綁定發生在編譯時:
public class NullRefStatic {
public static void test() { // <-- static method
System.out.println("It works");
}
public static void main(String... args) {
NullRefStatic target = null;
target.test(); // <-- Prints "It works"
}
}
因此,它正在打印出對象的值,在這種情況下將為null。
如果您嘗試使用它的函數或訪問任何屬性,則會發生空指針異常,因為這些屬性尚不存在,因此會出現空指針異常。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.