staticキーワード
変更された静的メンバ変数
意味
静的変数を定義し、それはクラスに属するのが一般的ですが、クラスのオブジェクトは一意ではない、すべてのオブジェクトがメッセージを共有します。
例
学生のクラス、学生の名前、年齢、個人所有の各学生に所属する、などの基本的な学校の数3が、同じ寮で各学生の設立は、すべての部屋番号は公共、各学生です共同で所有していました。
以下のように、次のカテゴリの確立:
public class StudentTe {
private int id; // 学号
private String name; // 姓名
private int age;
static String room;
private static int idCounter = 0;
public StudentTe() {
this.id=idCounter++;
}
public StudentTe(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;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public static String getRoom() {
return room;
}
public static void setRoom(String room) {
StudentTe.room = room;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
idCounter自動的に作成された演算する学生の数にカウンター同等。パブリックでもあり、この非常に一般的な
次のようにStudentTeクラスを使用して作成したオブジェクト、およびオブジェクトの初期化:
public class TestStudent {
public static void main(String[] args) {
StudentTe one = new StudentTe("郭靖",191);
one.room="101教室";
System.out.println("姓名:"+one.getName()+ ",年龄:"
+ one.getAge() + ",教室:"+one.room +
",学号:"+one.getId());
StudentTe two = new StudentTe("黄蓉",16);
System.out.println("姓名:"+ two.getName() + "年龄:"
+ two.getAge()+",教室:"+two.room +
", 学号:"+ two.getId());
}
}
:出力結果は以下の通りである。
静的変数に見られ、それぞれが+1にオブジェクトIDを作成しながら、一度だけの部屋を設定する必要があります。
変更された静的メンバメソッド
変更は、静的メンバメソッドを使用して、静的な方法となっている、静的メソッドはオブジェクトではなく、のクラスに属します
そして、あなたは、静的メソッドの静的な定義を呼び出すときに、使用する必要が静的メソッドの種類形式を。
メソッドを呼び出すと、静的なキーワードを変更しないときは、使用して、オブジェクトを定義する必要があり、オブジェクトのメソッドの形式を。
サンプルコードは、次のようにStudentTeは、上記クラスの上に加え、以下の方法:
public static void methodStatic() {
System.out.println("这是静态方法");
}
public void method() {
System.out.println("这是非静态方法");
}
次のコードは、モーダルクラスを追加します:
StudentTe stu =new StudentTe();
stu.method();
StudentTe.methodStatic();
結果は以下の通りである:
静的メソッドを使用することもでき、オブジェクトの静的メソッドをコールしますが、お勧めできません。
静的変数と静的メソッドの静的な変更でクラス名を使用することができます。静的変数/メソッドを。
注意事項
- 静的非静的直接アクセスのみ静的できる、直接アクセスすることはできません。それらのメモリをアクセス静的コンテンツにあるので、再度アクセス非静的なコンテンツを。先祖の子孫が分からない、将来の世代が彼らの先祖を知っています
- 静的メソッドは使用できません。このキーワードを。
静的なスタティックメモリ
メモリ静的変数、具体的に格納するための方法で静的エリアがあります。
静的変数や静的メソッドにアクセスする場合、ヒープメモリは見つけることはありませんが、直接、静的メソッドの引き参照ゾーンでのメモリ領域へ。
図メモリは以下のように:
静的コードブロック
直接書き込みインナーコードブロックのうち、
フォーマット定義:
パブリッククラスのクラス名{
静的{
コードの//静的ブロック
}
}
次のようにサンプルコードは次のとおりです。
public class TestStudent {
static {
System.out.println("静态代码块执行!");
}
}
機能:
この最初のクラス、唯一の時間コードの静的ブロックで使用される場合。
実行前より静的コンテンツは常に非静的よりも優先され、静的コードブロック工法
目的:
1回の静的変数を与えます。
------------------------------