java中this關鍵字的做用

一、this調用當前屬性:其主要做用是當須要給類中的數據進行初始化時,能夠經過this來進行賦值,而不用隨便定義一個變量來進行賦值,更有利於代碼的閱讀與理解this

  如:spa

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()) } }

 

二、this調用方法(普通方法、構造方法)code

  (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)構造方法:普通方法與構造方法的區別是構造方法在建立後只能掉用一次,用來初始化數據,而普通方法在建立後能夠調用屢次。blog

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

 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調用必須是構造方法中的第一個語句,不然便會出錯,固然也不能在普通方法中調用構造方法。class

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

 

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

相關文章
相關標籤/搜索