java - 如何理解:在父类中如果有常量属性,在子类中使用常量属性时是不会进行父类的类加载。
巴扎黑
巴扎黑 2017-04-17 17:34:01
0
4
410

是不是因为父类编译时会生成常量,而子类在使用时已经有常量了,不需要再对父类进行加载。

巴扎黑
巴扎黑

全員に返信(4)
Peter_Zhu

クラスの静的コード ブロックと静的定数ライトの使用は、クラスの読み込みには依存しません。つまり、クラスの静的変数を使用しても、そのクラスのロードはトリガーされません。

リーリー
いいねを押す +0
Peter_Zhu

サブクラスをロードすると、必ず親クラスがロードされます。
JVM のロード シーケンスでは、最初に親クラスをロードし、次にサブクラスを初期化する必要があります。

私の記憶が正しければ、親クラスの静的変数 - 親クラスの静的コード ブロック - サブクラスの静的変数 - サブクラスの静的コード ブロックの順です。 順番を間違って覚えていたかもしれません。

いいねを押す +0
左手右手慢动作

サブクラスをロードすると、最初に親クラスがロードされます
以下のコードを書きました:
Super

リーリー

サブ

リーリー

出力は次のとおりです:

アウトメイン
1
2

親クラスがロードされます。あなたが話している問題は何ですか?

いいねを押す +0
刘奇

補足:

リーリー

実行結果:

リーリー

注:

リーリー

定数から最後の部分を削除すると、結果は次のようになります:

リーリー

jdk1.8
これが発生する理由は、final が不変であるためにコンパイル時に最適化され、コンパイル後に定数プール内の文字列を直接指すためです。で。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート