java中“未初始化的String引用”怎么理解(TK in java的习题)

图片描述

我是这样理解的,大家看看对不对,输出结果是空(不是字符‘null’)

class rock{
    rock(){
        System.out.println(new String());}
}
public class constructor {
public static void main(String args[]){
    new rock();
}
}
阅读 4.4k
2 个回答

就是成员变量没有显示赋值,编译器会将成员变量设置为默认值

public class NoneInitTest {
    private String str;
    
    public static void main(String[] args) {
        System.out.println(new NoneInitTest().str);
    }
}

如果成员变量类型是对象,未显式初始化的话,就会被设为null,但是如果是方法中定义的局部变量的话,不会设置默认值,而是会报错

public class Foo {
    private static String str;
    
    public static void main(String[] args){
        System.out.println(str);
    }
}

就是类中的一个域如果没有被初始化,Java会把它初始化为该类型的零值。

推荐问题