Java Null或抛出异常

Java Null或抛出异常,java,arrays,null,Java,Arrays,Null,这本书将出版: 比尔·史蒂夫·拉里 这让我感到困惑,因为我认为访问任何带有null的数据都会引发NullPointerException。在访问具有空值的数组时是否曾经引发异常 还是system.out.println,拯救恩典?只要不说调用data.length,就可以使用for循环访问任何空值吗?因此,它正在打印对象的值,在这种情况下该值为空 如果您试图使用它的函数或访问任何属性,则会发生空指针异常,因为这些属性还不存在,因此会出现空指针异常。因此它会打印出对象的值,在这种情况下,该值将为空

这本书将出版: 比尔·史蒂夫·拉里

这让我感到困惑,因为我认为访问任何带有null的数据都会引发NullPointerException。在访问具有空值的数组时是否曾经引发异常


还是system.out.println,拯救恩典?只要不说调用data.length,就可以使用for循环访问任何空值吗?

因此,它正在打印对象的值,在这种情况下该值为空


如果您试图使用它的函数或访问任何属性,则会发生空指针异常,因为这些属性还不存在,因此会出现空指针异常。

因此它会打印出对象的值,在这种情况下,该值将为空


如果您试图使用其函数或访问任何属性,则会发生空指针异常,因为这些函数或属性尚不存在,因此出现空指针异常。

当操作数为空引用时,JLS将字符串串联定义为安全操作,ie不会抛出任何异常,如果它试图用.toString描述对象,则会出现这种情况,必须改用文本null

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

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());
        }
    }
}
出于好奇,访问空引用上的任何静态方法甚至不需要检查,因为绑定发生在编译时:

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

当操作数为空引用时,字符串串联在JLS中定义为一种安全操作,即它不会引发任何异常,如果它试图用.toString描述对象,则必须改用文本null

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

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());
        }
    }
}
出于好奇,访问空引用上的任何静态方法甚至不需要检查,因为绑定发生在编译时:

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

你可以处理一个空引用,你不能对它调用方法。你可以处理一个空引用,你不能对它调用方法。所以我猜这是我必须从经验中学到的,哪些方法是对空对象执行的安全操作实际上更容易:访问空引用总是抛出一个NPE。字符串连接仅在调用toString之前进行检查。某种程度上,打印已经内置了空检查,但通常需要NPE。有道理。静态方法也是一个有趣的信息。print方法也会检查null值-但您的特定代码示例不会执行此检查,因为null+表达式必须在之前进行完全计算,并且它会返回null注释尾部空格,所以我猜这是我必须从经验中学习的内容,在空对象上执行哪些方法是安全的操作实际上更容易:访问空引用总是抛出一个NPE。字符串连接仅在调用toString之前进行检查。某种程度上,打印已经内置了空检查,但通常需要NPE。有道理。静态方法也是一个有趣的信息。print方法也会检查null值-但是您的特定代码示例不会执行此检查,因为null+表达式必须在之前进行完全计算,并且它会返回null注释尾部的空格