欧美亚洲中文,在线国自产视频,欧洲一区在线观看视频,亚洲综合中文字幕在线观看

      1. <dfn id="rfwes"></dfn>
          <object id="rfwes"></object>
        1. 站長(zhǎng)資訊網(wǎng)
          最全最豐富的資訊網(wǎng)站

          java中this是什么意思?

          java中this是什么意思?

          this用在類內(nèi)部,表示類實(shí)例本身。

          this關(guān)鍵字是類內(nèi)部當(dāng)中對(duì)自己的一個(gè)引用,可以方便類中方法訪問(wèn)自己的屬性。

          java中this用法

          1、當(dāng)局部變量和成員變量重名的時(shí)候,在方法中使用this表示成員變量以示區(qū)分。

          class Demo{     String str = "這是成員變量";     void fun(String str){         System.out.println(str);         System.out.println(this.str);         this.str = str;         System.out.println(this.str);     } } public class This{     public static void main(String args[]){         Demo demo = new Demo();         demo.fun("這是局部變量");     } }

          分析:上面的類Demo中有一個(gè)成員變量str和一個(gè)局部變量str(類方法中的形式參數(shù)),很顯然局部變量和成員變量重名,這個(gè)時(shí)候一般在方法中直接使用str實(shí)際上是使用局部變量str,對(duì)成員變量str沒(méi)有任何影響,此時(shí)如果需要對(duì)成員變量做點(diǎn)什么,就必須使用this關(guān)鍵字。

          有個(gè)問(wèn)題,如果方法中沒(méi)有str,那么在方法中使用成員變量str會(huì)是什么情況呢?實(shí)際上是方法內(nèi)的所有操作都是針對(duì)成員變量str的。java編程思想的84頁(yè)中部有這樣一句話:如果在方法內(nèi)部調(diào)用同一個(gè)類的另一個(gè)方法,就不必使用this。同樣,在一個(gè)方法中如果沒(méi)有局部變量和成員變量同名,那么在這個(gè)方法中使用成員變量也不必使用this,可以運(yùn)行下面的代碼看看。

          class Demo{     String str = "這是成員變量";     void fun(String str1){         System.out.println(str1);         System.out.println(str);     } } public class This{     public static void main(String args[]){         Demo demo = new Demo();         demo.fun("這是局部變量");     } }

          2、this關(guān)鍵字把當(dāng)前對(duì)象傳遞給其他方法

          這里有個(gè)很經(jīng)典的例子,就是java編程思想的85頁(yè)的例子。我們拿出來(lái)仔細(xì)研究。

          class Person{     public void eat(Apple apple){         Apple peeled = apple.getPeeled();         System.out.println("Yummy");     } } class Peeler{     static Apple peel(Apple apple){         //....remove peel         return apple;     } } class Apple{     Apple getPeeled(){         return Peeler.peel(this);     } } public class This{     public static void main(String args[]){         new Person().eat(new Apple());     } }

          java中this是什么意思?

          這是我自己的認(rèn)識(shí),也許不正確,看看書(shū)中是怎樣說(shuō)的:Apple需要調(diào)用Peeler.peel()方法,他是一個(gè)外部的工具方法,將執(zhí)行由于某種原因而必須放在Apple外部的操作(也許是因?yàn)樵撏獠糠椒ㄒ獞?yīng)用于許多不同的類,而你卻不想重復(fù)這些代碼)。為了將其自身傳遞給外部方法,必須使用this關(guān)鍵字。

          分析:設(shè)想一個(gè)場(chǎng)景,假如各種水果去皮的工作都是一樣的,只要給我水果,我都按同樣的方法去皮。那么結(jié)合上面的例子,傳進(jìn)來(lái)一個(gè)水果,我們吃之前getPeeled(),必須將此水果作為參數(shù)傳遞給外部的peel(),用this來(lái)代表自身傳遞給外部方法。

          3、當(dāng)需要返回當(dāng)前對(duì)象的引用時(shí),就常常在方法寫(xiě)return this;

          這種做法的好處是:當(dāng)你使用一個(gè)對(duì)象調(diào)用該方法,該方法返回的是經(jīng)過(guò)修改后的對(duì)象,且又能使用該對(duì)象做其他的操作。因此很容易對(duì)一個(gè)對(duì)象進(jìn)行多次操作。

          public class This{     int i = 0;     This increment(){         i += 2;         return this;     }     void print(){         System.out.println("i = " + i);     }     public static void main(String args[]){         This x = new This();         x.increment().increment().print();     } }

          結(jié)果為:

          4

          4、在構(gòu)造器中調(diào)用構(gòu)造器需要使用this

          一個(gè)類有許多構(gòu)造函數(shù),有時(shí)候想在一個(gè)構(gòu)造函數(shù)中調(diào)用其他構(gòu)造函數(shù),以避免代碼重復(fù),可以使用this關(guān)鍵字。在java編程思想中有這樣一段話:通常寫(xiě)this的時(shí)候,都是指“這個(gè)對(duì)象”或者“當(dāng)前對(duì)象”,而且它本身表示對(duì)當(dāng)前對(duì)象的引用。在構(gòu)造器中,如果為this添加了參數(shù)列表,那么就有不同的含義。這將產(chǎn)生對(duì)符合此參數(shù)列表的某個(gè)構(gòu)造器的明確調(diào)用;這樣調(diào)用其他構(gòu)造函數(shù)就有了直接的途徑。

          java中this是什么意思?

          仔細(xì)分析:

          從主函數(shù)開(kāi)始,new Flower()會(huì)在內(nèi)存分配空間,初始化對(duì)象,初始化對(duì)象是調(diào)用構(gòu)造函數(shù),這里沒(méi)有寫(xiě)任何參數(shù),當(dāng)然是調(diào)用默認(rèn)構(gòu)造函數(shù),就是那個(gè)無(wú)參的構(gòu)函數(shù)。

          這個(gè)無(wú)參的構(gòu)造函數(shù)的第一行代碼就是this("hi",122);這里的意思是該無(wú)參構(gòu)造函數(shù)又去調(diào)用帶兩個(gè)參數(shù)的構(gòu)造函數(shù),來(lái)到帶兩個(gè)參數(shù)的構(gòu)造函數(shù),第一行代碼是this(s);這行代碼自動(dòng)匹配帶一個(gè)參數(shù)的構(gòu)造函數(shù),發(fā)現(xiàn)Flower(String ss)這個(gè)比較匹配,都是String類型的參數(shù)。

          然后調(diào)用了帶有一個(gè)String類型參數(shù)的構(gòu)造函數(shù),打?。?code>只有String類型的參數(shù)的構(gòu)造函數(shù) s = hi;然后回到上一級(jí)調(diào)用函數(shù),就是帶有兩個(gè)參數(shù)的構(gòu)造函數(shù),打印輸出:有String和int類型的參數(shù)的構(gòu)造函數(shù);再回到上一級(jí),就是無(wú)參構(gòu)造函數(shù),打?。?code>默認(rèn)構(gòu)造函數(shù)。

          此時(shí)構(gòu)造函數(shù)已經(jīng)初始化完成新建的對(duì)象,最后在主函數(shù)的最后一行代碼中打?。?code>petalCount=122 s=hi。

          畫(huà)個(gè)圖看得更明白。

          java中this是什么意思?

          有幾點(diǎn)要注意:

          1,this只可以調(diào)用一個(gè)構(gòu)造器,在一個(gè)構(gòu)造器中不能同時(shí)調(diào)用兩個(gè)構(gòu)造器;

          2,必須將你所調(diào)用的構(gòu)造器放在最開(kāi)始的位置,這也解釋了為什么不能在一個(gè)構(gòu)造函數(shù)中調(diào)用兩個(gè)構(gòu)造器,那第二個(gè)勢(shì)必不在最開(kāi)始位置。

          3,本例中在帶有兩個(gè)參數(shù)的構(gòu)造函數(shù)中可以用this調(diào)用其他任意一個(gè)只有一個(gè)參數(shù)的構(gòu)造函數(shù),這取決你自己,隨便調(diào)哪一個(gè)都可以。

          4,在構(gòu)造函數(shù)之外的方法內(nèi)不能使用this調(diào)用構(gòu)造函數(shù)。代碼里面注釋的都不能正確編譯。

          this總結(jié)

          1、表示對(duì)當(dāng)前對(duì)象的引用!

          2、表示用類的成員變量,而非函數(shù)參數(shù)。

          3、用于在構(gòu)造方法中引用滿足指定參數(shù)類型的構(gòu)造器(其實(shí)也就是構(gòu)造方法)。但是這里必須非常注意:只能引用一個(gè)構(gòu)造方法且必須位于開(kāi)始!

          4、很明顯this不能用在static方法中,因?yàn)閠his指代當(dāng)前對(duì)象,而static則無(wú)對(duì)象之說(shuō)。

          php中文網(wǎng),大量的免費(fèi)Java入門(mén)教程,歡迎在線學(xué)習(xí)!

          贊(0)
          分享到: 更多 (0)
          網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)