Java の初期化されていない変数とメンバー
初期化されていない変数は、プログラミングにおいて重大な問題を引き起こす可能性があります。 Java では、ローカル変数とクラス メンバーの区別により、混乱を招く可能性のある矛盾が生じます。
インスタンス メンバー
「TestClass」の「b」メンバーについて考えてみましょう。例。明示的に初期化されることはありませんが、オブジェクト タイプによりデフォルトで「null」になります。これにより、コンパイル時エラーなしで「b.notify()」を実行できるようになります。ただし、実行時には "NullPointerException" が発生します。
ローカル変数
一方、ローカル変数 "c" は自動的に初期化されません。 「c.notify()」にアクセスしようとすると、コンパイラは「c」が使用前に初期化されることを保証できないため、コンパイル時エラーが発生します。
理論
この矛盾は言語仕様自体に起因します。オブジェクト型のインスタンス変数はデフォルトで「null」に定義されますが、同じ型のローカル変数はそうではありません。この区別により、ローカル変数の信頼性が確保され、初期化されていないインスタンス メンバーへのアクセスによって発生する可能性のある未定義の動作が防止されます。
提供された例でクラス メンバーを「プライベート」にする目的は、直接アクセスを防ぐためであることに注意することが重要です。 、デフォルトの初期化を変更しないでください。したがって、この質問は非公開メンバーに対しても有効です。
以上が正しく実行するには、Java でローカル変数を初期化するのとクラス メンバーを初期化するのはどちらの場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。