this的三种用法 详解
/**
?* 一、使用this引用成員變量
?* 在一個(gè)類的方法或構(gòu)造方法內(nèi)部,可以使用"this.成員變量名"來(lái)引用成員變量
?* 有時(shí)可以省略,有時(shí)不能省略
?*/
class MemberVariable {private int a;public MemberVariable(int a) {this.a = a;}public int getA() {return a;}public void setA(int a) {this.a = a;} }注解:
??在該段代碼的 構(gòu)造方法 和 setA方法 的內(nèi)部,都是用this.a引用類的成員變量a
??因?yàn)闊o(wú)論在 構(gòu)造方法 還是 setA方法 內(nèi)部,都包含2個(gè)變量名為a的變量,一個(gè)是參數(shù)a,另外一個(gè)是成員變量a。
??按照J(rèn)ava語(yǔ)言的變量作用域,參數(shù)a的作用范圍在構(gòu)造方法或方法的內(nèi)部,成員變量a的作用范圍是整個(gè)類的內(nèi)部
??這樣在構(gòu)造方法和setA方法內(nèi)部就存在了變量a的沖突
??Java語(yǔ)言規(guī)定當(dāng)變量作用范圍重疊時(shí),作用域小的變量覆蓋作用域大的變量.所以在構(gòu)造方法和setA方法內(nèi)部,參數(shù)a起作用
??這樣需要訪問(wèn)成員變量a則必須使用this進(jìn)行引用.當(dāng)然,如果變量名不發(fā)生重疊,則this可以省略
??但是為了增強(qiáng)代碼的可讀性,一般將參數(shù)的名稱和成員變量的名稱保持一致,所以this的使用頻率在規(guī)范的代碼內(nèi)部應(yīng)該很多
/**
?* 二、使用this關(guān)鍵字引用構(gòu)造方法
?*/
class Constructor {int a ;public Constructor() {this(0);}public Constructor(int a) {this.a = a;}}注解:
? ?在無(wú)參構(gòu)造方法內(nèi)部,使用this調(diào)用了另一個(gè)有參構(gòu)造方法,其中0是根據(jù)需要傳遞的參數(shù)的值
? ?當(dāng)一個(gè)類內(nèi)部的構(gòu)造方法比較多時(shí),可以只書(shū)寫(xiě)一個(gè)構(gòu)造方法的內(nèi)部功能代碼
? ?然后其他的構(gòu)造方法都通過(guò)調(diào)用該構(gòu)造方法來(lái)實(shí)現(xiàn)
? ?這樣既保證了所有的構(gòu)造方法是統(tǒng)一的,也降低了代碼的重復(fù)
? ?注意: 在構(gòu)造方法內(nèi)部使用this關(guān)鍵字調(diào)用其他構(gòu)造方法時(shí),必須寫(xiě)在第一行,只能調(diào)用一個(gè)且僅一次構(gòu)造方法?
/**
? * 三、使用this代表自身對(duì)象(默認(rèn))
? */
class SelfObject {// SelfObject object;public SelfObject() {//object = this;}public void test() {System.out.println(this);}}注解:
?? ?創(chuàng)建一個(gè)引用對(duì)象object 在構(gòu)造方法內(nèi)部,將對(duì)象this的值賦給object
?? ?在test方法內(nèi)部,輸出對(duì)象this的內(nèi)容,這里的this都代表自身類型的對(duì)象
/**
? ? * 四、引用成員方法
? ? * 在一個(gè)類的內(nèi)部,成員方法之間的互相調(diào)用時(shí)也可以使用“this.方法名(參數(shù))”來(lái)進(jìn)行引用
? ? * 只是所有這樣的引用中this都可以省略,可有可無(wú)
? ? */
?
結(jié)論:
??1.表示引用類的成員變量 而非函數(shù)
??注意: 函數(shù)參數(shù)和成員變量同名進(jìn)行區(qū)分
??2.在構(gòu)造方法中引用其他構(gòu)造器(也就是構(gòu)造方法)
??注意: 只能引用一個(gè)構(gòu)造方法,且在第一行
??3.表示對(duì)當(dāng)前對(duì)象的引用 this關(guān)鍵字代表自身類的對(duì)象
? 4.引用成員方法
??注意: this不能用在static方法中
總結(jié)
以上是生活随笔為你收集整理的this的三种用法 详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 区块链人才急聘:一大波高薪职位等你来
- 下一篇: 乞丐效应