Java中this關(guān)鍵字的詳解

2019-8-17    seo達(dá)人

在java的學(xué)習(xí)中,當(dāng)接觸到類這一章的時(shí)候,就會(huì)避免不了的接觸到this關(guān)鍵字。



首先,this關(guān)鍵字指向的是當(dāng)前對(duì)象的引用



作用:

             this.屬性名稱                

                   指的是訪問(wèn)類中的成員變量,用來(lái)區(qū)分成員變量和局部變量(重名問(wèn)題)



              



class Test_08{

public static void main(String [] args){

//調(diào)用無(wú)參構(gòu)造函數(shù),

Person p1 = new Person();

p1.setAge(20);

p1.setName("張三");

p1.setGender("男");

System.out.println(""+p1.getName()+" 今年"+p1.getAge()+"歲 性別為:"+p1.getGender());

}



}

class Person{

private String name;

private int age;

private String gender;

Person(){}

Person(String name,int age,String gender){

this.name = name;

this.age = age;

this.gender = gender;

}

public void setName(String name){

name = name;

}

public String getName(){

return name;

}

public void setAge(int age){

age = age;

}

public int getAge(){

return age;

}

public void setGender(String gender){

gender = gender;

}

public String getGender(){

return gender;

}

}

 







對(duì)Test_08運(yùn)行后發(fā)現(xiàn),調(diào)用的set方法并沒(méi)有對(duì) 對(duì)象中的變量進(jìn)行賦值,是因?yàn)?,傳入的參?shù)變量名與類中屬性變量名重復(fù),因此我們?cè)趕et方法和有參構(gòu)造方法中加上了this.類屬性名稱,這樣就可以完成對(duì) 對(duì)象變量的賦值。如下圖:







             this.方法名稱              

                                用來(lái)訪問(wèn)本類的成員方法



              this();                              

                                                    訪問(wèn)本類的構(gòu)造方法



                                                    ()中可以有參數(shù)的 如果有參數(shù) 就是調(diào)用指定的有參構(gòu)造

           注意事項(xiàng):

                            1.this() 不能使用在普通方法中 只能寫在構(gòu)造方法中

                            2.必須是構(gòu)造方法中的第一條語(yǔ)句



例如,當(dāng)我們把this()放在有參構(gòu)造函數(shù)的末尾時(shí),例如用this("哈哈");我們先不管語(yǔ)法是否有錯(cuò)誤,試著按照程序的運(yùn)行來(lái)判斷一下結(jié)果,我們可以看出,當(dāng)在創(chuàng)建對(duì)象時(shí),假定調(diào)用含有this(“哈哈”)的構(gòu)造函數(shù),則剛開(kāi)始存放的值,會(huì)被this(“哈哈”)調(diào)用的只含有一個(gè)參數(shù)的構(gòu)造函數(shù)覆蓋,也就是說(shuō),最后的name會(huì)變成“哈哈”,這是與我們的初衷相違背的,而且運(yùn)行結(jié)果也是報(bào)錯(cuò),



當(dāng)我們換到構(gòu)造方法的第一句時(shí),則不會(huì)有這種錯(cuò)誤,因?yàn)樗⒉粫?huì)影響到后面name的賦值。







 







 



我們接下來(lái)把this語(yǔ)句放在構(gòu)造函數(shù)的第一句位置,



就不會(huì)有報(bào)錯(cuò)







 

————————————————

版權(quán)聲明:本文為CSDN博主「BetterShon」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

原文鏈接:https://blog.csdn.net/weixin_42386014/article/details/81138684

分享本文至:

日歷

鏈接

個(gè)人資料

存檔