-3

コンストラクターの内部または外部でのオブジェクトの初期化に違いがあるかどうかを理解することに興味があります

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

誰か説明できますか?

4

2 に答える 2

5

違いはありません。コンパイラーは、コンストラクター内の外部初期化を移動します。

一言で言えば、Javaのセクション3.2.4:フィールドのデフォルトとイニシャライザを参照してください。

于 2013-03-11T10:55:09.857 に答える
2

違いはありません。とにかく、コンパイラは初期化コード(2番目の例のように)をコンストラクタ本体に移動します。コードの可読性に応じて、このバリアントまたはそのバリアントを選択します。

于 2013-03-11T10:57:32.577 に答える