KW1*_*123 1 java default-value
码:
public class A {
public static void main(String[] args) {
int i;
System.out.println(i);
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它,而不是打印默认值int,即0时,它会发出错误消息The local variable i may not have been initialized.
为什么如果初始化是强制性的,那么为什么原始数据类型具有默认值呢?他们可能像C++一样拥有垃圾值.
默认值不用于局部变量,仅用于类中的字段:
public class A {
int i;
public static void main(String[] args) {
System.out.println(i);
}
}
Run Code Online (Sandbox Code Playgroud)
声明字段时并不总是需要分配值.声明但未初始化的字段将由编译器设置为合理的默认值.一般来说,此默认值将为零或null,具体取决于数据类型.然而,依赖于这样的默认值通常被认为是糟糕的编程风格.
下表总结了上述数据类型的默认值.
数据类型默认值(对于字段)
Run Code Online (Sandbox Code Playgroud)byte 0 short 0 int 0 long 0L float 0.0f double 0.0d char '\u0000' String (or any object) null boolean false局部变量略有不同; 编译器永远不会为未初始化的局部变量分配默认值.如果无法初始化声明它的局部变量,请确保在尝试使用它之前为其赋值.访问未初始化的局部变量将导致编译时错误.
| 归档时间: |
|
| 查看次数: |
57 次 |
| 最近记录: |