代码:
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++一样具有垃圾值。
发布于 2015-02-22 12:26:56
缺省值不用于局部变量,仅用于for a fields in a class
public class A {
int i;
public static void main(String[] args) {
System.out.println(i);
}
}当一个字段被声明为时,并不总是需要赋值为。已声明但未初始化的字段将由编译器设置为合理的默认值。一般来说,此默认值将为零或null,具体取决于数据类型。然而,依赖这样的默认值通常被认为是糟糕的编程风格。
下表汇总了上述数据类型的默认值。
数据类型默认值(用于字段)字节0短0整型0长0L浮点型0.0f双0.0d字符'\u0000‘字符串(或任何对象) null布尔值false 局部变量略有不同;编译器从不为未初始化的局部变量赋值。如果无法在声明的地方初始化局部变量,请确保在尝试使用它之前为其赋值。访问未初始化的局部变量将导致编译时错误。
https://stackoverflow.com/questions/28654549
复制相似问题