検索

ホームページ  >  に質問  >  本文

java虚拟机实例中 静态对象 只有一个吗?

一个静态内部类, 当他的外部类的对象 销毁后,静态内部类 对象 还存在内存中 ,
一个类的对象,无论创建销毁多少次 ,静态内部类的静态对象还是只有那一个,修改的时候,只是在原来的静态对象上,进行修改? 这样理解对不对..

阿神阿神2889日前435

全員に返信(3)返信します

  • 巴扎黑

    巴扎黑2017-04-18 10:34:45

    静的内部クラスについてだけ話す場合、それらはクラスに寄生する単なるトップレベルのクラスと考えることができますが、アクセスするには外部クラス名を持ってくる必要があります

    同様に、それが特定のクラスの静的フィールドである場合、それはクラスに寄生する単なる変数と考えることができます。それは、それが属しているクラスとは何の関係もありません。アクセスする場合は寄生クラスのクラス名を指定し、この変数が仮想マシン内に 1 つだけのインスタンスを持っている場合でも、すべての操作はこのオブジェクトに対してのみ行われます。その寄生クラスのオブジェクトを作成してからそれを破棄しても、それは機能しません。大丈夫です

    返事
    0
  • 迷茫

    迷茫2017-04-18 10:34:45

    まず第一に、静的内部クラスはそれをラップする外部クラスに依存しません (メンバー、メソッド、匿名内部クラスとは異なります)。これらは本質的に 2 つの独立した最上位クラスですが、静的内部クラスは外部クラスを使用します。クラスの名前空間。つまり、静的内部クラスは、OutClass.InnerStaticClass などの通常のトップレベル クラスと同様に使用できます。同時に、静的内部クラスは外部クラスのメンバーであるため、アクセス修飾子を使用してその可視性を変更できます: public protected private packagevisible

    返事
    0
  • PHPz

    PHPz2017-04-18 10:34:45

    「静的内部クラス」という概念を聞いたことがありません。静的の使用シナリオは 3 つだけです。つまり、静的変数、静的メソッド、静的ブロックです
    [静的変数]

    オブジェクト作成時、メンバ変数はヒープに格納され、静的メンバ変数はヒープではなくメソッド領域に格納されます。 クラスの静的メンバ変数のコピーは「1つ」だけです。 (メソッド領域に保存されます)、クラスが作成するオブジェクトの数に関係ありません。

    【静的メソッド】

    静的に変更されたメソッドは、特定のオブジェクトを操作する必要はありません。操作結果は、呼び出し時にクラス名によって直接参照でき、this キーワードは使用できません。

    【静的ブロック】

    静的ブロックは、クラスに属するコード ブロックです。クラスの読み込み中 (オブジェクトの作成前) に実行されるコード ブロックは 1 回だけ実行され、ソフトウェアに静的リソース (画像、音声など) を読み込むために使用できます。

    上記のオブジェクトはクラスがロードされるときにすべてメソッド領域にロードされ、コピーは 1 つだけ存在します。 Javaのメモリモデルの解析について話しているようです。ご興味がございましたら、この記事を読んで情報を広めてください。

    JVM メモリ モデル: http://blog.csdn.net/u0121526...

    返事
    0
  • キャンセル返事