Java:在构造函数内部或外部初始化对象?

时间:2013-03-11 10:52:36

标签: java constructor initialization

我有兴趣了解在构造函数内部或外部初始化对象之间是否存在任何差异

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();
  }
}

有人可以解释一下吗?

2 个答案:

答案 0 :(得分:4)

没有区别:编译器将在构造函数中移动任何外部初始化

请参阅Java for a Nutshell,3.2.4: Field Defaults and Initializers部分。

答案 1 :(得分:2)

没有区别。无论如何,编译器会将初始化代码(如第二个例子中)移动到构造函数体中。根据代码的可读性选择此变体或该变体。

相关问题