java中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關鍵字只能這樣進行賦值,不利於將變量與屬性統一起來 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)普通方法:

 1 class Book{//定義書的類
 2     private String name;//書本名字
 3     private int price;//書本價格
 4     public Book(String name,int price){//使用this對類的數據進行初始化
 5         this.name = name; 6         this.price = price;
 7         this.print();//調用本類普通方法,雖然可以不用使用this也可以進行本類普通方法的調用,但是好的習慣最好應該加上,目的是可以區分方法的定義來源
 8     }
 9     public String getInfo(){
10         return "書籍:" + name + ",價格:" + price;
11     }
12     public void print(){
13         System.out.printIn("***********");
14     }
15 }
16 public class ThisDemo{
17     public static void main(String args[]){
18         System.out.printIn(new Book("Java",89.9).getInfo())
19     }
20 }

  (2)構造方法:普通方法與構造方法的區別是構造方法在創建后只能掉用一次,用來初始化數據,而普通方法在創建后可以調用多次。

     當需要使用構造方法輸出同一重復內容時,若不使用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進行構造方法的調用,方法如下:

 1 class Book{//定義書的類
 2     private String name;//書本名字
 3     private int price;//書本價格
 4     public Book(){//無參構造
 5         System.out.printIn("*************");
 6     }
 7     public Book(String name){//一參構造
 8         this();//調用本類中的無參構造
 9         this.name = name;
10     }
11     public Book(String name,int price){//二參構造
12         this(name);//調用本類中的一參構造
13         this.price = price;
14         }
15     public String getInfo(){
16         return "書籍:" + name + ",價格:" + price;
17     }  
18 
19 }
20 public class ThisDemo{
21     public static void main(String args[]){
22         System.out.printIn(new Book("Java",89.9).getInfo())
23     }
24 }

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

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

 

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就表示當前執行的對象。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM