フィールドでのインスタンス化とコンストラクターでのインスタンス化の違いは何ですか?

若い:

これを行うことの違いは何ですか?

public class SomeClass {
    SomeObject obj = new SomeObject();
    //rest of the code
}

この

public class SomeClass {
    SomeObject obj;
    public SomeClass(){
       obj = new SomeObject();
    }
    //rest of the code
}
Pascal Thivent:

12.5Java言語仕様の新しいクラスインスタンスの作成によると、

新しく作成されたオブジェクトへの参照が結果として返される直前に、次の手順を使用して、示されたコンストラクターが処理され、新しいオブジェクトが初期化されます。

  1. コンストラクターの引数を、このコンストラクターの呼び出し用に新しく作成されたパラメーター変数に割り当てます。
  2. このコンストラクターが同じクラスの別のコンストラクターの明示的なコンストラクター呼び出し(これを使用)で始まる場合、引数を評価し、これらの同じ5つの手順を使用してそのコンストラクター呼び出しを再帰的に処理します。そのコンストラクターの呼び出しが突然完了すると、この手順は同じ理由で突然完了します。それ以外の場合は、手順5に進みます。
  3. このコンストラクタは、(これを使用して)同じクラス内の別のコンストラクタを明示的に呼び出すことから始まりません。このコンストラクターがObject以外のクラス用である場合、このコンストラクターは、スーパークラスコンストラクターの明示的または暗黙的な呼び出しから始まります(superを使用)。引数を評価し、同じ5つのステップを使用して、スーパークラスコンストラクターの呼び出しを再帰的に処理します。そのコンストラクターの呼び出しが突然完了すると、この手順は同じ理由で突然完了します。それ以外の場合は、ステップに進みます
  4. このクラスのインスタンス初期化子とインスタンス変数初期化子を実行し、インスタンス変数初期化子の値を、対応するインスタンス変数に、クラスのソースコードにテキストで表示される左から右の順序で割り当てます。これらのイニシャライザのいずれかを実行すると例外が発生した場合、それ以上のイニシャライザは処理されず、この手順は同じ例外で突然完了します。それ以外の場合は、手順5に進みます(フィールドの初期化式が、その型のデフォルトの初期化値と等しい値である定数式である場合、コンパイラーは誤ってコードを省略してフィールドを初期化します)。
  5. このコンストラクターの本体の残りを実行します。その実行が突然完了すると、この手順は同じ理由で突然完了します。それ以外の場合、この手順は正常に完了します。

したがって、違いは単なるステップ(ステップ4.またはステップ5.)ですが、結果は同じです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ハイパーレジャーファブリックでのインストールとインスタンス化のチェーンコードの実際の意味は何ですか?そしてそれらの違いは何ですか?

分類Dev

インスタンス初期化子とコンストラクターの違いは何ですか?

分類Dev

LaravelのコントラクトとPHPのインターフェースの違いは何ですか?

分類Dev

クラスター化インデックスと非クラスター化インデックスの違いは何ですか?

分類Dev

Scalaマッチ式のコンストラクターパターンと可変バインディングパターンの違いは何ですか?

分類Dev

コントローラのテストとスタブフィルタ/アクション。ガイドラインは何ですか?

分類Dev

SSIS-タスクのグループ化とシーケンスタスクの違いは何ですか?

分類Dev

行ストアデータページの概念に関して、クラスター化列ストアインデックスと非クラスター化列ストアインデックスの違いは何ですか

分類Dev

フレックススタートとベースラインの違いは何ですか?

分類Dev

特にプロパティインスタンス化メソッドの違いは何ですか。サービス基本クラスに関して?

分類Dev

インテントエクストラとインテントデータの違いは何ですか?

分類Dev

C ++定義とインスタンス化の違いは何ですか?

分類Dev

スレッドのサブクラスのオブジェクトをインスタンス化するために継承とポリモーフィズムを使用することの主な違いは何ですか?

分類Dev

スレッドのサブクラスのオブジェクトをインスタンス化するために継承とポリモーフィズムを使用することの主な違いは何ですか?

分類Dev

アクティビティのインテントフィルターとブロードキャストレシーバーの違いは何ですか?

分類Dev

インターフェイスとクラスに基づく匿名クラスの違いは何ですか

分類Dev

AWS AuroraRDSのクラスターとインスタンスの違いは何ですか

分類Dev

メインクラスでインスタンス化するときのコンストラクタの適切な使用法は何ですか?

分類Dev

クラスとインスタンス属性の違いは何ですか?

分類Dev

クラスインスタンスとクラス定義でクラスデコレータを呼び出すことの違いは何ですか?

分類Dev

特定のコンストラクターでコストのかかるフィールドをレイジー初期化する方法はありますか?

分類Dev

JavaScriptのインターフェースとコンストラクター関数の違いは何ですか?

分類Dev

インスタンス初期化子はコンストラクターとどう違うのですか?

分類Dev

C ++のプロトタイプデザインパターンとコピーコンストラクターの違いは何ですか

分類Dev

コードとインタープリターのアンダースコアの違いは何ですか?

分類Dev

Javaのインターフェースと@インターフェースの違いは何ですか?

分類Dev

スタートボタンのシャットダウンとコマンドラインのシャットダウンの違いは何ですか?

分類Dev

初期化リストを使用してフィールドを初期化し、コンストラクター内で初期化することの違いは何ですか?

分類Dev

TypeScriptの「クラスの宣言」と「インターフェース」の違いは何ですか

Related 関連記事

  1. 1

    ハイパーレジャーファブリックでのインストールとインスタンス化のチェーンコードの実際の意味は何ですか?そしてそれらの違いは何ですか?

  2. 2

    インスタンス初期化子とコンストラクターの違いは何ですか?

  3. 3

    LaravelのコントラクトとPHPのインターフェースの違いは何ですか?

  4. 4

    クラスター化インデックスと非クラスター化インデックスの違いは何ですか?

  5. 5

    Scalaマッチ式のコンストラクターパターンと可変バインディングパターンの違いは何ですか?

  6. 6

    コントローラのテストとスタブフィルタ/アクション。ガイドラインは何ですか?

  7. 7

    SSIS-タスクのグループ化とシーケンスタスクの違いは何ですか?

  8. 8

    行ストアデータページの概念に関して、クラスター化列ストアインデックスと非クラスター化列ストアインデックスの違いは何ですか

  9. 9

    フレックススタートとベースラインの違いは何ですか?

  10. 10

    特にプロパティインスタンス化メソッドの違いは何ですか。サービス基本クラスに関して?

  11. 11

    インテントエクストラとインテントデータの違いは何ですか?

  12. 12

    C ++定義とインスタンス化の違いは何ですか?

  13. 13

    スレッドのサブクラスのオブジェクトをインスタンス化するために継承とポリモーフィズムを使用することの主な違いは何ですか?

  14. 14

    スレッドのサブクラスのオブジェクトをインスタンス化するために継承とポリモーフィズムを使用することの主な違いは何ですか?

  15. 15

    アクティビティのインテントフィルターとブロードキャストレシーバーの違いは何ですか?

  16. 16

    インターフェイスとクラスに基づく匿名クラスの違いは何ですか

  17. 17

    AWS AuroraRDSのクラスターとインスタンスの違いは何ですか

  18. 18

    メインクラスでインスタンス化するときのコンストラクタの適切な使用法は何ですか?

  19. 19

    クラスとインスタンス属性の違いは何ですか?

  20. 20

    クラスインスタンスとクラス定義でクラスデコレータを呼び出すことの違いは何ですか?

  21. 21

    特定のコンストラクターでコストのかかるフィールドをレイジー初期化する方法はありますか?

  22. 22

    JavaScriptのインターフェースとコンストラクター関数の違いは何ですか?

  23. 23

    インスタンス初期化子はコンストラクターとどう違うのですか?

  24. 24

    C ++のプロトタイプデザインパターンとコピーコンストラクターの違いは何ですか

  25. 25

    コードとインタープリターのアンダースコアの違いは何ですか?

  26. 26

    Javaのインターフェースと@インターフェースの違いは何ですか?

  27. 27

    スタートボタンのシャットダウンとコマンドラインのシャットダウンの違いは何ですか?

  28. 28

    初期化リストを使用してフィールドを初期化し、コンストラクター内で初期化することの違いは何ですか?

  29. 29

    TypeScriptの「クラスの宣言」と「インターフェース」の違いは何ですか

ホットタグ

アーカイブ