Javaベース-メンバー変数、ローカル変数、静的変数の違い


以前、Javaの勉強を始めたばかりの頃、Javaベースの変数について話していましたが、これは後でよく使われることを知っていましたが、基本文法のここに、メンバー変数、ローカル変数、静的変数が出てきたとは思いませんでした.変わりやすくて気絶しやすいので、選んで整理してみましょう.
       この兄3人を区別するには、まず、それらが何なのかを知らなければなりません.まずメンバー変数からナイフを下ろします.
メンバー変数
       私たちは一つのことを研究します.
               プロパティぷろぱてぃ:外部フィーチャーがいぶぷろぱてぃ;例えば人の身長、体重
               行為:何ができるか;例えば、人は話をしたり、ボールを打ったりする行為があります.
       Java言語では、最も基本的な単位はクラスであり、クラスは物事を体現するために使用されます.
       クラスクラスクラスで物事を記述するのもそうです.
               属性:対応するクラスのメンバー変数
               ≪動作|Behavior|oem_src≫:対応するクラスのメンバー関数
       定義クラスは、定義クラスのメンバー(メンバー変数とメンバー関数)です.
      開拓:クラスは抽象的な概念であり、対象はクラスの具体的な存在であり、体現である.例えば、生活の中の自動車は、一つのクラスと見なすことができます.私たちは自動車クラスと呼ばれています.各車には色とタイヤ数(属性、すなわちメンバー変数として定義できます)があり、各車は走ることができます(つまり、車の行為、対応クラスの総メンバー関数)、私たちは自動車を実例化して、ベンツ、BMWなどのオブジェクトを生成します.
Demo1:
public class Car {
         private String color; //       ,    
         private int numLuntai; //        ,    
 
         public Car(String color, int numLuntai){
                   super();
                   this.color = color;
                   this.numLuntai = numLuntai;
         }
        public void run() {
                   System.out.println(this.numLuntai+ "    " +this.color + "         ");
         }
}
public class ClassTest {
         public static void main(String[] args){
                   Car bmw = new Car("  ", 4);      //         ,   bmw
                   bmw.run();
         }
}

実行結果:
4輪の黒い乗用車が道路を走っています
      ここでcolorとnumLuntaiはCarクラスのメンバー変数と呼ばれ、この属性はクラスの属性を記述するために使用することができ、そうでなければ局所変数として定義されるべきである.
      例えば、forサイクルにおけるiは局所変数である.
                   for(int i = 0; i < args.length; i++) {
                           ......
                   }

また、たとえばメンバーメソッドに書かれた変数はローカル変数です.
publicclass Car {
         private String color; //       ,    
         private int numLuntai; //        ,    
         public Car(String color, int numLuntai){
                   super();
                   this.color = color;
                   this.numLuntai = numLuntai;
         }
public void run() {
                   String carName=”   ”;    //        
                   System.out.println(this.numLuntai+ "    " +this.color + carName+"         ");
         }
}
publicclass ClassTest {
         public static void main(String[] args){
                   Car bmw = new Car("  ", 4);      //         ,   bmw
                   bmw.run();
         }
}

結果:
4輪の黒いBMWの乗用車が道路を走っています
メンバー変数とローカル変数の違い
       メンバー変数:
          ①メンバー変数はクラスに定義され、クラス全体にアクセスできます.
          ②メンバ変数は、オブジェクトの作成に伴って作成され、オブジェクトの消失に伴って消失し、オブジェクトが存在するスタックメモリに存在する.
          ③メンバー変数にはデフォルト初期化値があります.
      ローカル変数:
          ①ローカル変数は、関数内、文内など、ローカル範囲内でのみ定義され、属する領域でのみ有効です.
          ②ローカル変数はスタックメモリに存在し、作用範囲が終了すると、変数空間が自動的に解放されます.
          ③ローカル変数にデフォルト初期化値はありません
 
      変数を使用する場合に従うべき原則は、近接原則です.
      まず局所的な範囲で探して、あれば使います.次にメンバーの場所を探します.
せいてきへんすう
      staticによって修飾された変数は静的変数と呼ばれ、実質的にグローバル変数である.あるコンテンツがすべてのオブジェクトによって共有されている場合、そのコンテンツは静的に修飾されるべきである.静的に修飾されていない内容は,実はオブジェクトに属する特殊な記述である.
例:
class Person{
       //    ,    
       String name;
       //    ,   
       //          static  
       static String country = "CN";
       public void show(){
            System. out.println(country + ":" + name);
             //    :System.out.println(Person.country+ ":" + this.name);
      }
}
class StaticDemo{
       public static void main(String[]args){
            Personp = new Person();
            System. out.println(p.country);
             //         
            System. out.println(Person.country);
      }
} 

結果:
CN
CN
メンバー変数と静的変数の違い
      1、2つの変数のライフサイクルが異なる
            メンバー変数は、オブジェクトの作成に伴って存在し、オブジェクトが回収されるにつれて解放されます.
            静的変数はクラスのロードに伴って存在し,クラスが消えるにつれて消失する.
      2、呼び出し方が違う
            メンバー変数はオブジェクトによってのみ呼び出されます.
            静的変数は、オブジェクトによって呼び出されてもよく、クラス名によって呼び出されてもよい.
      3、別名が違う
            メンバー変数はインスタンス変数とも呼ばれます.
            静的変数はクラス変数とも呼ばれます.
      4、データ保管場所が違う
            メンバー変数はスタックメモリのオブジェクトに格納されるので、オブジェクト固有のデータとも呼ばれます.
            静的変数データはメソッド領域(共有データ領域)の静的領域に格納されるので、オブジェクトの共有データとも呼ばれる.
リストの比較:
       メンバー変数、ローカル変数、静的変数の違い
 
メンバー変数
ローカル変数
せいてきへんすう
場所の定義
 クラス内、メソッド外
メソッド、またはメソッドの形式パラメータ
クラス内、メソッド外
初期化値
デフォルト初期化値あり
いいえ、定義してから使用できます.
デフォルト初期化値あり
コールモード
オブジェクト呼び出し
---
オブジェクト呼び出し、クラス名呼び出し
きおくいち
スタック
スタック内
メソッド領域
ライフサイクル
オブジェクトとの共存
方法と共に存亡する.
クラスと共に存亡する
別名#ベツメイ#
インスタンス変数
---
クラス変数
まとめ:
        3つの本質はすべて変数であるにもかかわらず、使用時にはかなりの違いがあり、うっかりすると罠に陥る可能性があります.クラスで、クラスのプロパティを記述するために変数を使用できる場合は、メンバー変数として定義します.そうしない場合は、ローカル変数として定義する必要があります.一方、1つの変数がグローバルで使用できる場合(あるコンテンツがすべてのオブジェクトで共有されている場合)、この変数をstaticで修飾することができます.すなわち、静的変数です.(静的方法との密接な関連にも注意しなければならないが,ここでは詳しくは述べない)