java中this關鍵字的作用

本篇文章為大家展示了java中this關鍵字的作用,代碼簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

創(chuàng)新互聯(lián)是一家集網站建設,新華企業(yè)網站建設,新華品牌網站建設,網站定制,新華網站建設報價,網絡營銷,網絡優(yōu)化,新華網站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網站。

想理解this首先要bai理解兩個概念,類和對du象。一個一般的類可以new很多對象,zhi每一個對dao象都有一個this來指向這個對象本身。類本身是沒有this的,因為類本身是一個抽象的概念。要想用類的方法和屬性,就必須new一個他的對象,這時會產生一個對應的this,就是this object;或者用靜態(tài)方法,靜態(tài)方法可以不用new對象,因為是屬于類的方法,所以所有靜態(tài)方法里是不能出現(xiàn)this的。

1、this調用當前屬性:其主要作用是當需要給類中的數據進行初始化時,可以通過this來進行賦值,而不用隨便定義一個變量來進行賦值,更有利于代碼的閱讀與理解

如:

class Book{//定義書的類
    private String name;//書本名字
    private int price;//書本價格
    public Book(String name,int price){ //使用this對類的數據進行初始化
        this.name = name;        
     this.price = price;
    }
    /*public Book(String n,int p){ //若不使用this關鍵字只能這樣進行賦值,不利于將變量與屬性統(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調用方法(普通方法、構造方法)

(1)普通方法:

class Book{//定義書的類
    private String name;//書本名字
    private int price;//書本價格
    public Book(String name,int price){//使用this對類的數據進行初始化
        this.name = name; 6         this.price = price;
        this.print();//調用本類普通方法,雖然可以不用使用this也可以進行本類普通方法的調用,但是好的習慣最好應該加上,目的是可以區(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)構造方法:普通方法與構造方法的區(qū)別是構造方法在創(chuàng)建后只能掉用一次,用來初始化數據,而普通方法在創(chuàng)建后可以調用多次。

當需要使用構造方法輸出同一重復內容時,若不使用this關鍵字,則只能使用如下代碼:

復制代碼

class Book{//定義書的類
    private String name;//書本名字
    private int price;//書本價格
    public Book(){//無參構造
        System.out.printIn("*************");
    }
    public Book(String name){//一參構造
        System.out.printIn("*************");
        this.name = name;
    }
    public Book(String name,int price){//二參構造
        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())
    }
}

顯然,這樣大大浪費了代碼行數,而應該使用this進行構造方法的調用,方法如下:

class Book{//定義書的類
    private String name;//書本名字
    private int price;//書本價格
    public Book(){//無參構造
        System.out.printIn("*************");
    }
    public Book(String name){//一參構造
        this();//調用本類中的無參構造
        this.name = name;
    }
    public Book(String name,int price){//二參構造
        this(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())
    }
}

注:對this調用必須是構造方法中的第一個語句,否則便會出錯,當然也不能在普通方法中調用構造方法。

最為重要的是,使用this調用不能形成循環(huán),即不能形成遞歸調用而沒有出口。

3、this表示當前方法

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調用fun方法(this = b1)
        //兩個輸出結果的地址一樣,代表著此時this代表著b1
        System.out.printIn("*************")
        Book b2 = new Book();
        System.out.printIn("MAIN方法"+b2);
        b2.fun();//此時輸出結果和b2一樣
    }
}

在整個過程中,this的定義沒有變,只要有某一個對象調用本類中的方法,此時this就表示當前執(zhí)行的對象。

上述內容就是java中this關鍵字的作用,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網站標題:java中this關鍵字的作用
網站網址:http://bm7419.com/article30/pcgsso.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網站設計公司、Google微信公眾號、虛擬主機外貿建站

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

商城網站建設