静的キーワードの 3 つの主要な機能:
(推奨チュートリアル: Java 入門チュートリアル)
static 静的メンバー変数
静的静的メンバー メソッド
静的静的コード ブロック
分析:
1.静的静的メンバー変数
説明: a メンバー変数で static キーワードが使用されている場合、その変数はオブジェクト自体ではなく、その変数が属するクラスに属します。複数のオブジェクトが同じデータを共有します。
コード例:
Student クラスを構築し、2 つの静的メンバー変数 (room Classroom と idCounter) を設定します。 main() メソッドで 2 つの生徒オブジェクト 1 と 2 をインスタンス化し、1 つのオブジェクトの部屋にのみ値を割り当てます。印刷すると、two.room の値が one.room の値と同じであることがわかります。 。
room は static キーワードを使用しているため、クラスに属し、オブジェクト自体には属さず、複数のオブジェクトで共有できることがわかります。 idCounter は静的変数であり、初期化されるのは 1 回だけであるため、作成される各オブジェクトの ID は 1 ずつ増加します。
public class Demo01StaticField { public static void main(String[] args) { Student one=new Student("郭靖",19); Student two=new Student("黄蓉",16); one.room="101教室"; System.out.println("姓名:"+one.getName()+",年龄:" +one.getAge()+",教室:"+one.room +",学号:"+one.getId()); //姓名:郭靖,年龄:19,教室:101教室,学号:1 System.out.println("姓名:"+two.getName() +",年龄:"+two.getAge()+",教室:"+two.room +",学号:"+two.getId()); //姓名:黄蓉,年龄:16,教室:101教室,学号:2 } } public class Student { private int id; //学号 private String name; //姓名 private int age; //年龄 static String room; //所在教室 private static int idCounter=0; //学号计数器,每当new了一个新对象的时候,计数器++ public Student() { this.id= ++idCounter; } public Student(String name, int age) { this.name = name; this.age = age; this.id= ++idCounter; } public int getId() { return id; } public void setId(int id) { this.id = id; } //name和age的Getter,Setter方法同上id,省略 }
2. static static メンバー メソッド
説明: メンバー メソッドが同様に static キーワードを使用する場合、これは静的メソッドになります。静的メソッドはオブジェクトではなくクラスに属します。
静的変更メンバー メソッドの利点: 新しいオブジェクトの煩雑さとリソースの消費を回避し、[クラス名.メソッド名] を通じて直接使用できます。
コード例:
メンバー変数、静的メンバー変数、メンバー メソッド、および静的メンバー メソッドを持つ新しい Myclass クラスを作成します。メンバー メソッドはメンバー変数と静的変数の両方にアクセスできることがわかります。静的メソッドは静的変数にのみアクセスでき、非静的変数にはアクセスできず、this キーワードは使用できません。 static キーワードを指定してこのクラスを使用する場合、オブジェクトを作成する必要はなく、クラス名を通じて直接使用できます。このクラスの静的メソッドの場合、クラス名は省略できます。
public class Demo02StaticMethod { public static void main(String[] args) { //非静态方法使用:1.首先创建对象 MyClass obj=new MyClass(); //2.然后才能使用没有static关键字的方法 obj.method(); //对于静态方法来说,可以通过对象名进行调用,也可以通过类名称来调用。 obj.methodStatic(); //正确,不推荐,这种写法也会被javac翻译成“类名称.静态方法名” MyClass.methodStatic(); //正确,推荐 //对于本类当中的静态方法,可以省略类名称 myMethod(); Demo02StaticMethod.myMethod(); //完全等效 } public static void myMethod(){ System.out.println("自己的方法!"); } } public class MyClass { int num; //成员变量 static int numStatic; //静态变量 //成员方法 public void method(){ System.out.println("这是一个普通的成员方法。"); //成员方法可以访问成员变量 System.out.println(num); //成员方法可以访问静态变量 System.out.println(numStatic); } //静态方法 public static void methodStatic(){ System.out.println("这是一个普通的静态方法。"); //静态方法可以访问静态变量 System.out.println(numStatic); //静态不能直接访问非静态【重点】 //System.out.println(num); //错误写法 //静态方法中不能使用this关键字 //System.out.println(this); //错误写法 } }
(学習ビデオの推奨: java コース)
3. 静的静的コード ブロック
形式:
public class 类名称{ static{ //静态代码块的内容 } }
特徴:このクラスを初めて使用するとき、静的コード ブロックは 1 回だけ実行され、プログラムのパフォーマンスを最適化するために使用できます。ほとんどの場合、構成ファイルのロードなど、静的コード ブロック内に 1 回だけ実行される初期化操作 (静的リソースの初期化) コードを配置します。注: 静的コンテンツは常に非静的コンテンツよりも優先されるため、静的コード ブロックはコンストラクターの前に実行されます。
public class Demo04StaticCode { public static void main(String[] args) { Person one=new Person(); System.out.println("************************"); //无论创建几个Person对象,静态代码块只执行一次 Person two=new Person(); } } public class Person { static{ System.out.println("静态代码块执行!"); } public Person() { System.out.println("构造方法执行!"); } }
実行結果:
以上がstatic キーワードの 3 つの主な機能の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。