Kyl*_*e T 9 java initialization
我知道Java原语有默认的初始化值; 例如0对int.
根据我的研究,似乎我不应该依赖这些价值观.我是否应该始终提供明确的初始化,如果是,在哪里?
这是我的计划的一部分:
public class Calculator {
// Initialize value where it's declared?
private int value;
public Calculator() {
// Initialize value in constructor?
}
public void add(int other) {
value += other;
}
}
Run Code Online (Sandbox Code Playgroud)
使用 Java 生成的默认值是绝对可以的,您不需要显式static初始化class. Java 语言规范有此要求,因此该语言的任何实现都必须遵守。换句话说,如果您使用成员变量的默认值,您的代码将保持 100% 可移植。这适用于原始类型和引用类型(后者用 初始化null)。
有关更多详细信息,请参阅Java 语言规范,第 81 页。
4.12.5 变量的初始值
程序中的每个变量在使用其值之前都必须有一个值: - 每个类变量、实例变量或数组组件在创建时都使用默认值进行初始化
必须提供显式初始化的唯一情况是声明局部变量时:
局部变量在使用之前必须通过初始化或赋值以可以使用明确赋值规则进行验证的方式显式赋予值。
但是,由于初始化本地失败是一个编译时错误,因此编译器将在运行程序之前查明每个缺失的初始化。