gpt4 book ai didi

java - 为空或抛出异常

转载 作者:行者123 更新时间:2023-11-29 03:05:54 29 4
gpt4 key购买 nike

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 比尔·史蒂夫·拉里

这让我感到困惑,因为我认为使用 null 访问任何数据都会抛出 NullPointerException。访问具有空值的数组时是否会抛出异常?

或者是 system.out.println(),可取之处?你可以使用 for 循环访问任何 null 值,只要你不说调用 data.length() 吗?

最佳答案

当操作数为空引用时,字符串连接在 JLS 中被定义为安全操作,即它不会抛出任何异常(如果它试图描述对象,就会出现这种情况与 .toString()) 和文本 "null" 必须改用。

当需要拆箱时,安全检查运行:

Integer val = null;
int err = val + 1; // throws NPE

出于好奇,访问空引用上的任何静态方法甚至不需要检查,因为绑定(bind)发生在编译时:

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"
}
}

关于java - 为空或抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32192813/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com