目次
One.thisキーワード
1.オブジェクト作成のプロセスとその性質
構築メソッドは、Javaオブジェクトを作成するための重要な方法です。コンストラクタがnewキーワードを介して呼び出されると、コンストラクタはこのクラスのオブジェクトを返しますが、このオブジェクトはコンストラクタによって完全には作成されません。
オブジェクトの作成は、次の4つのステップに分かれています
。1。オブジェクトスペースを割り当て、オブジェクトメンバー変数を0または空
に初期化します。2。属性値(int id)の明示的な初期化を
実行します。3。構築メソッドを実行します
。4。オブジェクトのアドレスto関連する変数
の本質は「作成されたオブジェクトのアドレス」です!オブジェクトはコンストラクターが呼び出される前に作成されているためです。
したがって、これを使用して、構築メソッドの「現在のオブジェクト」を表すこともできます。
2.これの最も一般的な使用法:
プログラムにあいまいさが存在する場合、これは現在のオブジェクトを示すために使用する必要があります。通常のメソッドでは、これは常にメソッドを呼び出したオブジェクトを参照します。構築メソッドでは、これは常に初期化されるオブジェクトを指します。
thisキーワードを使用して、オーバーロードされた構築メソッドを呼び出し、同じ初期化コードを回避します。ただし、構築方法でのみ使用でき、構築方法の最初の文に含まれている必要があります。
これは静的メソッドでは使用できません。
public class User {
int id;//用户名
String name;//账户名
String pwd;//密码
public User(int id,String name){
this.id=id; //用this来避免歧义
this.name=name;
}
public User(int id, String name, String pwd) {
//this可以调用其他构造器,且必须位于第一位
this(id,name); //相当于调用了上面的构造函数
this.pwd = pwd;
}
public void login(){
System.out.println("登陆了:"+this.name); //快捷键sout
}
public static void main(String[] args) { //快捷键psvm
User u1=new User(100,"hh");
u1.login();
}
}
Two.staticキーワード
クラスでは、staticで宣言されたメンバー変数は静的メンバー変数であり、クラス変数とも呼ばれます。クラス変数のライフサイクルはクラスのライフサイクルと同じであり、アプリケーション全体の実行中に有効になります。
これには次の特徴があります。
クラスのパブリック変数であり、クラスに属し、クラスのすべてのインスタンスで共有され、クラスがロードされるときに明示的に初期化されます。
このクラスのすべてのオブジェクトに対して、静的メンバー変数は1つだけです。このクラスのすべてのオブジェクトで共有されます!!
一般に「クラス名クラス属性/メソッド」によって呼び出されます。(オブジェクト参照またはクラス名を介して(インスタンス化せずに)静的メンバーにアクセスすることもできます。)
非静的メンバーには、静的メソッドで直接アクセスすることはできません。
public class User {
int id;//用户名
String name;//账户名
String pwd;//密码
static String affection="爱情好苦";
public User(int id,String name){
this.id=id; //用this来避免歧义
this.name=name;
}
public User(int id, String name, String pwd) {
//this可以调用其他构造器,且必须位于第一位
this(id,name); //相当于调用了上面的构造函数
this.pwd = pwd;
}
public void login(){
System.out.println("登陆了:"+this.name); //快捷键sout
}
public static void printCompany(){
//login();调用非静态成员,编译就会报错
System.out.println(affection);
}
public static void main(String[] args) { //快捷键psvm
User u1=new User(100,"hh");
User.printCompany();
User.affection="我选择放弃";
User.printCompany();
}
static{
System.out.println("类的静态初始化");
affection="test";
}
}
出力:
类的静态初始化
test
我选择放弃
3.変数の分類