首頁  >  文章  >  Java  >  javathis有什麼用

javathis有什麼用

藏色散人
藏色散人原創
2019-11-13 11:29:124488瀏覽

javathis有什麼用

java this有什麼用?

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)普通方法:

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也可以进行本类普通方法的调用,但是好的习惯最好应该加上,目的是可以区分方法的定义来源
    }
    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)建構方法:普通方法與建構方法的差異在於建構方法在創建後只能掉用一次,用來初始化數據,而普通方法在創建後可以調用多次。

     當需要使用建構方法輸出相同重複內容時,若不使用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呼叫不能形成循環,也就是不能形成遞歸呼叫而沒有出口。

 

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就表示目前執行的物件。

以上是javathis有什麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn