无论发生什么默认值?

时间:2015-02-22 04:25:50

标签: java default-value

代码:

public class A {

    public static void main(String[] args) {
        int i;
        System.out.println(i);
    }

}

当我运行它时,它不是打印默认值int,即0,而是发出The local variable i may not have been initialized的错误。

为什么初始化是强制性的,那么为什么原始数据类型具有默认值?他们可能像C ++一样拥有垃圾值。

1 个答案:

答案 0 :(得分:6)

默认值不用于局部变量,仅用于for a fields in a class

public class A {
    int i;

    public static void main(String[] args) {
        System.out.println(i);
    }

}
  

Default Values

     

声明字段时,并不总是需要指定值。声明但未初始化的字段将由编译器设置为合理的默认值。一般来说,此默认值将为零或null,具体取决于数据类型。但是,依赖于这样的默认值通常被认为是糟糕的编程风格。

     

下表总结了上述数据类型的默认值。

     

数据类型默认值(对于字段)

 byte                     0  
 short                    0  
 int                      0  
 long                     0L  
 float                    0.0f  
 double                   0.0d  
 char                     '\u0000'  
 String (or any object)   null  
 boolean                  false  
     

局部变量略有不同;编译器永远不会为未初始化的局部变量分配默认值。如果无法初始化声明它的局部变量,请确保在尝试使用它之前为其赋值。访问未初始化的局部变量将导致编译时错误。