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中文網其他相關文章!