this關鍵字知識總結 學習資源:B站韓順平老師Java入門教學 ==代碼示例1== public class This01 { public static void main(String[] args) { Dog d1 = new Dog("小黃", 3); d1.info(); System ...
this關鍵字知識總結
學習資源:B站韓順平老師Java入門教學
代碼示例1
public class This01 {
public static void main(String[] args) {
Dog d1 = new Dog("小黃", 3);
d1.info();
System.out.println("對象d1的hashcode=:" + d1.hashCode());
System.out.println("---------------");
Dog d2 = new Dog("小花", 2);
d2.info();
System.out.println("對象d2的hashcode=:" + d2.hashCode());
}
}
class Dog {
int age;
String name;
// 根據變數的作用域原則,方法中的name與age實際指的是局部變數而不是成員變數
// public Dog(String name, int age) {
// name = name;
// age = age;
// }
// java虛擬機會給每個對象分配this,代表當前對象
public Dog(String name, int age) {
this.name = name;
this.age = age;
System.out.println("構造器中:this.hashcode=:" + this.hashCode());
}
public void info() {
System.out.println("狗狗名字叫:" + this.name + "\n年齡:" + this.age);
System.out.println("成員方法中:this.hashcode=:" + this.hashCode());
}
}
代碼示例2
public class ThisDetail {
public static void main(String[] args) {
T t1 = new T();
t1.f2();
System.out.println("---------------");
T t2 = new T(10);
System.out.println("---------------");
T t3 = new T("小明", 10);
System.out.println(t1.name + "==" + t1.age);
System.out.println(t2.name + "==" + t2.age);
System.out.println(t3.name + "==" + t3.age);
}
}
class T {
int age;
String name;
// 細節1:訪問成員方法的語法:this.方法名(參數列表);
public void f1() {
System.out.println("f1()方法..");
}
public void f2() {
System.out.println("f2()方法..");
// 在f2()中調用f1()
// 第一種方法
f1();
// 第二種方法
this.f1();
}
// 細節2:調用構造器語法:this(參數列表); 只能在構造器中使用,只能放在構造器的首句
T() {
this.name = "小李";
this.age = 18;
System.out.println("調用構造器1");
}
T(int age) {
this();
this.age = age;
System.out.println("調用構造器2");
}
T(String name, int age) {
this(age);
this.name = name;
System.out.println("調用構造器3");
}
}
註意事項與使用細節
- this關鍵字可以用來訪問本類的屬性、方法、構造器;
- this用於區分當前類的屬性和局部變數;
- 訪問成員方法的語法:this.方法名(參數列表);
- 訪問構造器語法:this(參數列表); 註意:只能在構造器中使用,且需要為構造器中的首行;
- this不能在類定義的外部使用,只能在類定義的方法中使用