This 的做用ide
- 解決類變量與局部變量重名問題
- this永遠表明的是調用某個變量或方法的類對象
先看看沒有this的狀況函數
class Person { private String name; Person(String name) { name = name;//這裏的兩個name都是構造方法形參的name,與類變量name無關 } public void speak() { System.out.println("I am:" + name); } } class PersonTest { public static void main(String[] args) { Person person = new Person("武則天"); person.speak(); } }
結果:this
I am:null
由結果可見,咱們調用有參構造方法的參數並無傳遞給Person的類變量「name」idea
加上this關鍵字spa
Person(String name) { this.name = name; }
結果code
I am:武則天
二:this在構造函數之間的調用對象
class Person { private String name; private String position; Person(String name) { this.name = name; } Person(String name,String position){ this(name);//注意:這裏的this後面沒有小數點,它就是表明一個對象的引用 this.position=position; } public void speak(){ System.out.println(name+"是大唐的"+position); } } class PersonTest { public static void main(String[] args) { Person p1 = new Person(" 狄仁傑","宰相"); p1.speak(); } }
結果blog
狄仁傑是大唐的宰相
this的位置很重要。在構造函數當中,this必須放在第一行。it
以下:把this(name)沒有放在第一行,此時idea當即報錯並提示this應該在第一行。io
Person(String name,String position){ this.position=position; this(name); }
如下代碼演示,請仔細閱讀
class Person { private String name; private String position; Person(String name) { this.name ="武則天"; System.out.println("i am---"+this.name); } Person(String name,String position){ this(name); System.out.println("i am==="+name); this.name=name; this.position=position; System.out.println("i am"+name); } public void speak(){ System.out.println(name+"是大唐的"+position); } } class PersonTest { public static void main(String[] args) { Person p1 = new Person(" 狄仁傑","宰相"); p1.speak(); } }
結果
i am---武則天 i am=== 狄仁傑 i am 狄仁傑 狄仁傑是大唐的宰相
後記:
2020年2月29日 星期六 上海 雨 冷 農曆2020年二月初七
每4年纔會有2月29日