1.區分成員變量和局部變量
public class ThisDemo {
public static void main(String[] args) {
Student s=new Student("小明明",20);
System.out.println(s);
}
}
class Student{
String name;
int age;
public Student(String name, int age) {
//注:沒有加this
name = name;
age = age;
}
@Override
public String toString() {
return "Student [ name=" + name + ", age=" + age +"]";
}
}
打印結果:Student [ name=null, age=0]
賦值沒有成功,說明:name(局部變量)=name(局部變量);
而不是name(成員變量)=name(局部變量);
public Student(String name, int age) {
//注:可以使用this進行區分成員變量和局部變量
this.name = name;
this.age = age;
}
打印結果:Student [ name=小明明, age=20]
這樣子就可以賦值成功啦
2.代表當前對象
public static void main(String[] args) {
Student s=new Student("小明明",20);
System.out.println(s);
}
//為什么加入this后就可以區分呢?
因為this當前代表的是s實例(對象)相當於
s.name="小明明";
s.age="20";
//再可以理解如下
this.name=實例(對象).name="小明明";
3.構造器與構造器之間的調用
為Student再添加兩個構造器,修改后如下:
class Student{
String name;
int age;
int id;
public Student(int id,String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public Student(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student [ id=" + id + ", name=" + name + ", age=" + age +"]";
}
}
//構造器用法-->this();跟函數一樣()中可以寫參數
構造器調用一般是這樣子用的.不同的構造器中存在相同代碼.為了復用性。可以在參數少的構造器中調用參數多的構造器,如下:
class Student{
String name;
int age;
int id;
public Student(String name, int age, int id) {
this.name = name;
this.age = age;
this.id = id;
System.out.println("構造器3已調用");
}
public Student(String name, int age) {
this(name,age,0);
System.out.println("構造器2已調用");
}
public Student(String name) {
this(name,0);//參數不足,就使用參數默認值補全
System.out.println("構造器1已調用");
}
@Override
public String toString() {
return "Student [ id=" + id + ", name=" + name + ", age=" + age +"]";
}
}
測試結果1:
public static void main(String[] args) {
Student s=new Student("小明明");
System.out.println(s);
}
構造器3已調用
構造器2已調用
構造器1已調用
Student [ id=0, name=小明明, age=0]
測試結果2:
public static void main(String[] args) {
Student s=new Student("小明明",20);
System.out.println(s);
}
構造器3已調用
構造器2已調用
Student [ id=0, name=小明明, age=20]
總結:這樣子可以在參數最多的構造器中編寫代表。其他構造器負責調用參數最多的那個構造器就好了
this的三種常見用法介紹完畢!怎么樣很容易吧.
---------------------
作者:Meliodasi
來源:CSDN
原文:https://blog.csdn.net/qq_38131751/article/details/81436398
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!
