本篇文章為大家展示了java中this關(guān)鍵字的作用,代碼簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),新華企業(yè)網(wǎng)站建設(shè),新華品牌網(wǎng)站建設(shè),網(wǎng)站定制,新華網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,新華網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
想理解this首先要bai理解兩個概念,類和對du象。一個一般的類可以new很多對象,zhi每一個對dao象都有一個this來指向這個對象本身。類本身是沒有this的,因為類本身是一個抽象的概念。要想用類的方法和屬性,就必須new一個他的對象,這時會產(chǎn)生一個對應(yīng)的this,就是this object;或者用靜態(tài)方法,靜態(tài)方法可以不用new對象,因為是屬于類的方法,所以所有靜態(tài)方法里是不能出現(xiàn)this的。
1、this調(diào)用當(dāng)前屬性:其主要作用是當(dāng)需要給類中的數(shù)據(jù)進(jìn)行初始化時,可以通過this來進(jìn)行賦值,而不用隨便定義一個變量來進(jìn)行賦值,更有利于代碼的閱讀與理解
如:
class Book{//定義書的類 private String name;//書本名字 private int price;//書本價格 public Book(String name,int price){ //使用this對類的數(shù)據(jù)進(jìn)行初始化 this.name = name; this.price = price; } /*public Book(String n,int p){ //若不使用this關(guān)鍵字只能這樣進(jìn)行賦值,不利于將變量與屬性統(tǒng)一起來 name = n; price = p; }*/ public String getInfo(){ return "書籍:" + name + ",價格:" + 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;//書本價格 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 + ",價格:" + 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)容時,若不使用this關(guān)鍵字,則只能使用如下代碼:
復(fù)制代碼
class Book{//定義書的類 private String name;//書本名字 private int price;//書本價格 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 + ",價格:" + price; } } public class ThisDemo{ public static void main(String args[]){ System.out.printIn(new Book("Java",89.9).getInfo()) } }
顯然,這樣大大浪費了代碼行數(shù),而應(yīng)該使用this進(jìn)行構(gòu)造方法的調(diào)用,方法如下:
class Book{//定義書的類 private String name;//書本名字 private int price;//書本價格 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 + ",價格:" + price; } } public class ThisDemo{ public static void main(String args[]){ System.out.printIn(new Book("Java",89.9).getInfo()) } }
注:對this調(diào)用必須是構(gòu)造方法中的第一個語句,否則便會出錯,當(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) //兩個輸出結(jié)果的地址一樣,代表著此時this代表著b1 System.out.printIn("*************") Book b2 = new Book(); System.out.printIn("MAIN方法"+b2); b2.fun();//此時輸出結(jié)果和b2一樣 } }
在整個過程中,this的定義沒有變,只要有某一個對象調(diào)用本類中的方法,此時this就表示當(dāng)前執(zhí)行的對象。
上述內(nèi)容就是java中this關(guān)鍵字的作用,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。