如何打印对象的默认值?

时间:2015-09-27 02:30:32

标签: java null default

如果t1给出编译错误,t2打印内存地址,t3打印为null, 然后你会写什么来获得一个对象的默认值(null)打印。

public class Test {

public Test{

}
public static void main(String[] args) {
    Test t1;                              
    Test t2= new Test();                  
    Test t3= null;                        
    System.out.println(t1);            //compile error uninitialized
    System.out.println(t2);            //prints memory address
    System.out.println(t3);            //prints null

}
}

3 个答案:

答案 0 :(得分:3)

只有实例或静态变量(在类范围内声明)具有默认值。局部变量(在方法范围内声明)没有默认值:在使用它们之前,需要初始化这些变量。

所以当编译器拒绝打印t1(编译错误)时,编译器是正确的:你没有在方法中的那个点为这个变量赋值,而且它是一个局部变量,所以它具有默认值。

答案 1 :(得分:2)

这里的变量是方法中的局部变量。来自Java doc

  

编译器将为其字段分配合理的默认值   以上类型; 对于局部变量,永远不会分配默认值

所以你需要手动初始化它们。

答案 2 :(得分:0)

只有变量具有默认值。对象包含所述变量或其他对象,其中还包含变量或其他对象等。