Java中this關鍵字的做用

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日

相關文章
相關標籤/搜索