我有兴趣了解在构造函数内部或外部初始化对象之间是否存在任何差异
public class HTMLTable {
int value1;
Scanner user_input;
public HTMLTable () {
user_input = new Scanner(System.in);
value = user_input.next();
}
}
而不是:
public class HTMLTable {
int value1;
Scanner user_input = new Scanner(System.in);
public HTMLTable () {
value = user_input.next();
}
}
有人可以解释一下吗?
答案 0 :(得分:4)
没有区别:编译器将在构造函数中移动任何外部初始化。
请参阅Java for a Nutshell,3.2.4: Field Defaults and Initializers部分。
答案 1 :(得分:2)
没有区别。无论如何,编译器会将初始化代码(如第二个例子中)移动到构造函数体中。根据代码的可读性选择此变体或该变体。