1、this調(diào)用當(dāng)前屬性:其主要作用是當(dāng)需要給類中的數(shù)據(jù)進(jìn)行初始化時(shí),可以通過this來進(jìn)行賦值,而不用隨便定義一個(gè)變量來進(jìn)行賦值,更有利于代碼的閱讀與理解
如:
class?Book{//定義書的類????private?String?name;//書本名字????private?int?price;//書本價(jià)格????public?Book(String?name,int?price){?//使用this對類的數(shù)據(jù)進(jìn)行初始化????????this.name?=?name;???????? ? this.price?=?price;????}????????public?String?getInfo(){????????return?"書籍:"?+?name?+?",價(jià)格:"?+?price;????}}public?class?ThisDemo{????public?static?void?main(String?args[]){????????System.out.printIn(new?Book("Java",89.9).getInfo())????}}
2、this調(diào)用方法(普通方法、構(gòu)造方法)
(1)普通方法:
?class?Book{//定義書的類?????private?String?name;//書本名字?????private?int?price;//書本價(jià)格?????public?Book(String?name,int?price){//使用this對類的數(shù)據(jù)進(jìn)行初始化?????????this.name?=?name;?6?????????this.price?=?price;?????????this.print();//調(diào)用本類普通方法,雖然可以不用使用this也可以進(jìn)行本類普通方法的調(diào)用,但是好的習(xí)慣最好應(yīng)該加上,目的是可以區(qū)分方法的定義來源?????}?????public?String?getInfo(){?????????return?"書籍:"?+?name?+?",價(jià)格:"?+?price;?????}?????public?void?print(){?????????System.out.printIn("***********");?????}?}?public?class?ThisDemo{?????public?static?void?main(String?args[]){?????????System.out.printIn(new?Book("Java",89.9).getInfo())?????}?}
(2)構(gòu)造方法:普通方法與構(gòu)造方法的區(qū)別是構(gòu)造方法在創(chuàng)建后只能掉用一次,用來初始化數(shù)據(jù),而普通方法在創(chuàng)建后可以調(diào)用多次。
當(dāng)需要使用構(gòu)造方法輸出同一重復(fù)內(nèi)容時(shí),若不使用this關(guān)鍵字,則只能使用如下代碼:
class?Book{//定義書的類????private?String?name;//書本名字????private?int?price;//書本價(jià)格????public?Book(){//無參構(gòu)造????????System.out.printIn("*************");????}????public?Book(String?name){//一參構(gòu)造????????System.out.printIn("*************");????????this.name?=?name;????}????public?Book(String?name,int?price){//二參構(gòu)造????????System.out.printIn("*************");????????this.name?=?name;????????this.price?=?price;????????}????public?String?getInfo(){????????return?"書籍:"?+?name?+?",價(jià)格:"?+?price;????}}public?class?ThisDemo{????public?static?void?main(String?args[]){????????System.out.printIn(new?Book("Java",89.9).getInfo())????}}
顯然,這樣大大浪費(fèi)了代碼行數(shù),而應(yīng)該使用this進(jìn)行構(gòu)造方法的調(diào)用,方法如下:、
class?Book{//定義書的類????private?String?name;//書本名字????private?int?price;//書本價(jià)格????public?Book(){//無參構(gòu)造????????System.out.printIn("*************");????}????public?Book(String?name){//一參構(gòu)造????????this();//調(diào)用本類中的無參構(gòu)造????????this.name?=?name;????}????public?Book(String?name,int?price){//二參構(gòu)造????????this(name);//調(diào)用本類中的一參構(gòu)造????????this.price?=?price;????????}????public?String?getInfo(){????????return?"書籍:"?+?name?+?",價(jià)格:"?+?price;????}}public?class?ThisDemo{????public?static?void?main(String?args[]){????????System.out.printIn(new?Book("Java",89.9).getInfo())????}}
注:對this調(diào)用必須是構(gòu)造方法中的第一個(gè)語句,否則便會出錯(cuò),當(dāng)然也不能在普通方法中調(diào)用構(gòu)造方法。
最為重要的是,使用this調(diào)用不能形成循環(huán),即不能形成遞歸調(diào)用而沒有出口。
3、this表示當(dāng)前方法
class?Book{????public?void?fun(){????????System.out.printIn("FUN方法"+this);????}????}}public?class?ThisDemo{????public?static?void?main(String?args[]){????????Book?b1?=?new?Book();????????System.out.printIn("MAIN方法"+b1);????????b1.fun();//有b1調(diào)用fun方法(this?=?b1)????????//兩個(gè)輸出結(jié)果的地址一樣,代表著此時(shí)this代表著b1????????System.out.printIn("*************")????????Book?b2?=?new?Book();????????System.out.printIn("MAIN方法"+b2);????????b2.fun();//此時(shí)輸出結(jié)果和b2一樣????}}
在整個(gè)過程中,this的定義沒有變,只要有某一個(gè)對象調(diào)用本類中的方法,此時(shí)this就表示當(dāng)前執(zhí)行的對象。
Java技術(shù)相關(guān)內(nèi)容
Java this關(guān)鍵字的使用(在構(gòu)造方法中):http://www.bjpowernode.com/tutorial_java_se/1043.html
Java中static關(guān)鍵字:http://www.bjpowernode.com/tutorial_java_se/1044.html
Java this關(guān)鍵字的使用(在實(shí)例方法中):http://www.bjpowernode.com/tutorial_java_se/1031.html
Java中this關(guān)鍵字是什么:http://www.bjpowernode.com/tutorial_java_se/118.html
以上就是天津卓眾教育java培訓(xùn)機(jī)構(gòu)的小編針對“編程內(nèi)容分享,Java中this關(guān)鍵字的作用”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。