JAVA staticの役割


(  )        (  )  ,     (  )      ,                ,        
                 
           

1、 :staticで された
とインスタンス の い:
1> はメモリに1 のバックアップを し、 にJVMは に1 だけメモリを り て、クラスをロードする で のメモリ り てを する. は、クラス から アクセスできます.
2>インスタンス :インスタンスを するたびに、インスタンス にメモリが り てられます.インスタンス は、メモリに のバックアップがあり、 いに しません.
 
2、 :staticで される
メソッドにアクセスするには、クラスのインスタンスを する はありません.クラス でアクセスできます.オブジェクトが に されている は、オブジェクトリファレンスからアクセスすることもできます.
メソッドを する は、 の に してください.
1> メソッドでは、 やメソッドを むクラス の の メンバーに アクセスするだけで、クラス の メンバーに アクセスすることはできません.これは、 メソッドと の 、クラスのインスタンスを してから する があるためです.
2> メソッドでは、thisキーとsuperキーを の で できません. メソッドは にオブジェクトを する がないため、 メソッドが び されると、thisが するオブジェクトは されません.
3>サブクラスは の メソッドのみを 、 ロード、 にすることができ、サブクラスは の メソッドを き えることができず、 が メソッドではないメソッドを メソッドに き えることもできない.
 
3、main()メソッド
クラスがJavaインタプリタによって マウントされて される 、このクラスにはmain()メソッドが です.JVMはクラスのmain()メソッドを び す があるため、このメソッドのアクセス はpublicでなければなりません.また、JVMはmain()メソッドを する にオブジェクトを する がないため、このメソッドはstatic()でなければなりません.このメソッドはStringタイプの パラメータを します.この にはコマンドラインからmain()メソッドに されるパラメータが され、main()メソッドの が してもタイプは されないため、このメソッドの りタイプはvoidであるため、main()メソッドの はpublic static voidである.main()は であるだけに、main()メソッドではインスタンス やインスタンスメソッドに アクセスできません.
 
4、 コードブロック
クラスには、 のメソッドボディに しない コードブロックを めることができます.これらの コードブロックは、JVMがクラスをロードするときに されます.クラスに の コードブロックがある 、JVMはクラスに される で され、 コードブロックは1 しか されません.JVMは、 メソッドを び す に コードブロックを します.
static メンバー とstaticコードブロックは、クラスで された で されます.
 
5、 モード(Singleton)
クラスの モードとは、ソフトウェアシステム において、あるクラスに して1つのオブジェクトインスタンスしか せず、そのクラスに して1つのオブジェクトインスタンスしか できないことを する である.クラスを1つの マシンで1つのオブジェクトしか できないようにするには、まずクラスの のアクセス をprivateに する があります.これにより、newオペレータでクラスの にクラスのオブジェクトを することはできませんが、クラス ではクラスのオブジェクトを することができます.クラスの からクラスのオブジェクトが られないため、クラス で されたオブジェクトを すためにクラスの メソッドを び すしかなく、 メソッドはクラス の メンバー にしかアクセスできないため、クラス で されたクラスオブジェクトを す も に する があります. 
Singltonモードの な はjavaアプリケーションでクラスclassが1つのインスタンスしか しないことを することです.
くの では、ディレクトリの 、データベース など、このような スレッド が です.また、Singletonは することができる.これにより, の クラスが になると,1つの ライブラリのようにサービスを に することができる.
 
6、 クラス
ネストされたクラスはprivateメンバーを むネストされたクラスのメンバーに アクセスできますが、ネストされたクラスのメンバーはネストされたクラスに アクセスできません. 
n
クラスオブジェクトに クラスオブジェクトへの が され、 クラスの
メンバーメソッドで にアクセスした 、そのメソッドと クラスに
この を したことがあります. クラスでは
this
の がそれに わります
クラスオブジェクトの .
    
する
static
クラスを すると,このクラスは1つに する.
の のクラスがあるので、
static
の クラスで
static
メンバー、ただし、
static
の クラスのメンバーは できません
を します.
static
のです.
static
の クラスは パッケージクラスを できません

static
のメンバー 、この は に くない!だから
static
ネストされたクラスはあまり されません.
       
のローカル ( のパラメータもローカル )、 クラスのメンバー 、 クラスの
メンバー の は、 のプログラムコードで する で、 たちが に んでいることを に する があります.
アクセスする .
public class Outer
{
 private int size;
 public class Inner
{
     private int size;
     public void doStuff( int size)
{
      size++;//
するのは
doStuff
のパラメータ
    this.size++;//
するのは
Inner
クラス のメンバー
    Outer.this.size++;//
リファレンス
Outer
クラス のメンバー
  }
}
}