溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

好程序員Java教程分享Java中this的幾種用法

發(fā)布時間:2020-07-25 01:21:18 來源:網(wǎng)絡 閱讀:175 作者:wx5da18b5c4b01e 欄目:編程語言

  好程序員Java教程分享Javathis幾種用法,this關鍵字必須放在非靜態(tài)方法里面

?

  this關鍵字代表自身,在程序中主要的使用用途有以下幾個方面:

?

  ?使用this關鍵字引用成員變量

?

  ?使用this關鍵字在自身構造方法內(nèi)部引用其它構造方法

?

  ?使用this關鍵字代表自身類的對象

?

  ?使用this關鍵字引用成員方法

?

  引用成員變量

?

  在一個類的方法或構造方法內(nèi)部,可以使用this.成員變量名”這樣的格式來引用成員變量名,有些時候可以省略,有些時候不能省略。首先看一下下面的代碼:

?

  /**

?

  *使用this引用成員變量

?

  */

?

  publiccla***eferenceVariable{

?

  privateinta;

?

  publicReferenceVariable(inta){

?

  this.a=a;

?

  }

?

  publicintgetA(){

?

  returna;

?

  }

?

  publicvoidsetA(inta){

?

  this.a=a;

?

  }

?

  }

?

  在該代碼的構造方法和setA方法內(nèi)部,都是用this.a引用類的成員變量。因為無論在構造方法還是setA方法內(nèi)部,都包含2個變量名為a的變量,一個是參數(shù)a,另外一個是成員變量a。按照Java語言的變量作用范圍規(guī)定,參數(shù)a的作用范圍為構造方法或方法內(nèi)部,成員變量a的作用范圍是類的內(nèi)部,這樣在構造方法和setA方法內(nèi)部就存在了變量a的沖突,Java語言規(guī)定當變量作用范圍重疊時,作用域小的變量覆蓋作用域大的變量。所以在構造方法和setA方法內(nèi)部,參數(shù)a起作用。

?

  這樣需要訪問成員變量a則必須使用this進行引用。當然,如果變量名不發(fā)生重疊,則this可以省略。

?

  但是為了增強代碼的可讀性,一般將參數(shù)的名稱和成員變量的名稱保持一致,所以this的使用頻率在規(guī)范的代碼內(nèi)部應該很多。

?

  引用構造方法

?

  在一個類的構造方法內(nèi)部,也可以使用this關鍵字引用其它的構造方法,這樣可以降低代碼的重復,也可以使所有的構造方法保持統(tǒng)一,這樣方便以后的代碼修改和維護,也方便代碼的閱讀。

?

  下面是一個簡單的示例:

?

  /**

?

  *使用this關鍵字引用構造方法

?

  */

?

  publiccla***eferenceConstructor{

?

  inta;

?

  publicReferenceConstructor(){

?

  this(0);

?

  }

?

  publicReferenceConstructor(inta){

?

  this.a=a;

?

  }

?

  }

?

  這里在不帶參數(shù)的構造方法內(nèi)部,使用this調(diào)用了另外一個構造方法,其中0是根據(jù)需要傳遞的參數(shù)的值,當一個類內(nèi)部的構造方法比較多時,可以只書寫一個構造方法的內(nèi)部功能代碼,然后其它的構造方法都通過調(diào)用該構造方法實現(xiàn),這樣既保證了所有的構造是統(tǒng)一的,也降低了代碼的重復。

?

  在實際使用時,需要注意的是,在構造方法內(nèi)部使用this關鍵字調(diào)用其它的構造方法時,調(diào)用的代碼只能出現(xiàn)在構造方法內(nèi)部的第一行可執(zhí)行代碼。這樣,在構造方法內(nèi)部使用this關鍵字調(diào)用構造方法最多會出現(xiàn)一次。

?

  代表自身對象

?

  在一個類的內(nèi)部,也可以使用this代表自身類的對象,或者換句話說,每個類內(nèi)部都有一個隱含的成員變量,該成員變量的類型是該類的類型,該成員變量的名稱是this,實際使用this代表自身類的對象的示例代碼如下:

?

  /**

?

  *使用this代表自身類的對象

?

  */

?

  publiccla***eferenceObject{

?

  ReferenceObjectinstance;

?

  publicReferenceObject(){

?

  instance=this;

?

  }

?

  publicvoidtest(){

?

  System.out.println(this);

?

  }

?

  }

?

  在構造方法內(nèi)部,將對象this的值賦值給instance,在test方法內(nèi)部,輸出對象this的內(nèi)容,這里的this都代表自身類型的對象。

?

  引用成員方法

?

在一個類的內(nèi)部,成員方法之間的互相調(diào)用時也可以使用this.方法名(參數(shù))”來進行引用,只是所有這樣的引用中this都可以省略,這里就不詳細介紹了。

?


向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI