您當前的位置:資訊 >  >> 
this far音樂_this

時間:2023-06-12 21:50:43    來源:互聯網

1、Java關鍵字this只能用于方法方法體內。


(資料圖)

2、當一個對象創建后,Java虛擬機(JVM)就會給這個對象分配一個引用自身的指針,這個指針的名字就是 this。

3、因此,this只能在類中的非靜態方法中使用,靜態方法和靜態的代碼塊中絕對不能出現this,這在“Java關鍵字static、final 使用總結”一文中給出了明確解釋。

4、并且this只和特定的對象關聯,而不和類關聯,同一個類的不同對象有不同的this。

5、package test;public class ThisTest { private int i=0; //第一個構造器:有一個int型形參 ThisTest(int i){ this.i=i+1;//此時this表示引用成員變量i,而非函數參數i System.out.println("Int constructor i——this.i: "+i+"——"+this.i); System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1)); //從兩個輸出結果充分證明了i和this.i是不一樣的! } // 第二個構造器:有一個String型形參 ThisTest(String s){ System.out.println("String constructor: "+s); } // 第三個構造器:有一個int型形參和一個String型形參 ThisTest(int i,String s){ this(s);//this調用第二個構造器 //this(i); this.i=i++;//this以引用該類的成員變量 System.out.println("Int constructor: "+i+"/n"+"String constructor: "+s); } public ThisTest increment(){ this.i++; return this;//返回的是當前的對象,該對象屬于(ThisTest) } public static void main(String[] args){ ThisTest tt0=new ThisTest(10); ThisTest tt1=new ThisTest("ok"); ThisTest tt2=new ThisTest(20,"ok again!"); System.out.println(tt0.increment().increment().increment().i); //tt0.increment()返回一個在tt0基礎上i++的ThisTest對象, //接著又返回在上面返回的對象基礎上i++的ThisTest對象! }}/*細節問題注釋已經寫的比較清楚了,這里不在贅述,只是總結一下,其實this主要要三種用法:表示對當前對象的引用!2、表示用類的成員變量,而非函數參數,注意在函數參數和成員變量同名是進行區分!其實這是第一種用法的特例,比較常用,所以那出來強調一下。

6、3、用于在構造方法中引用滿足指定參數類型的構造器(其實也就是構造方法)。

7、但是這里必須非常注意:只能引用一個構造方法且必須位于開始!還有就是注意:this不能用在static方法中!所以甚至有人給static方法的定義就是:沒有this的方法!雖然夸張,但是卻充分說明this不能在static方法中使用!說明在什么情況下需要用到this: 第一、通過this調用另一個構造方法,用發是this(參數列表),這個僅僅在類的構造方法中,別的地方不能這么用。

8、 第二、函數參數或者函數中的局部變量和成員變量同名的情況下,成員變量被屏蔽,此時要訪問成員變量則需要用“this.成員變量名”的方式來引用成員變量。

9、當然,在沒有同名的情況下,可以直接用成員變量的名字,而不用this,用了也不為錯,呵呵。

10、 第三、在函數中,需要引用該函所屬類的當前對象時候,直接用this。

11、 其實這些用法總結都是從對“this是指向對象本身的一個指針”這句話的更深入的理解而來的,死記不然容易忘記而且容易搞錯,要理解! */一、指自己所在的對象。

12、比如在一個方法中,調用其他對象的變量或方法時,可以使用那個對象的對象名,比如aa.abc();而調用自己所在對象的方法或變量時,不知道別人給起了什么名,所以直接用this.abc()就可以了。

13、二、看一個小例子中“this”的用法!/** * @author fengzhi-neusoft * * 本示例為了說明this的三種用法! */package test;public class ThisTest { private int i=0; //第一個構造器:有一個int型形參 ThisTest(int i){ this.i=i+1;//此時this表示引用成員變量i,而非函數參數i System.out.println("Int constructor i——this.i: "+i+"——"+this.i); System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1)); //從兩個輸出結果充分證明了i和this.i是不一樣的! } // 第二個構造器:有一個String型形參 ThisTest(String s){ System.out.println("String constructor: "+s); } // 第三個構造器:有一個int型形參和一個String型形參 ThisTest(int i,String s){ this(s);//this調用第二個構造器 //this(i); /*此處不能用,因為其他任何方法都不能調用構造器,只有構造方法能調用他。

14、 但是必須注意:就算是構造方法調用構造器,也必須為于其第一行,構造方法也只能調 用一個且僅一次構造器!*/ this.i=i++;//this以引用該類的成員變量 System.out.println("Int constructor: "+i+"/n"+"String constructor: "+s); } public ThisTest increment(){ this.i++; return this;//返回的是當前的對象,該對象屬于(ThisTest) } public static void main(String[] args){ ThisTest tt0=new ThisTest(10); ThisTest tt1=new ThisTest("ok"); ThisTest tt2=new ThisTest(20,"ok again!");System.out.println(tt0.increment().increment().increment().i); //tt0.increment()返回一個在tt0基礎上i++的ThisTest對象, //接著又返回在上面返回的對象基礎上i++的ThisTest對象! }}運行結果:Int constructor i——this.i: 10——11String constructor: okString constructor: ok again!Int constructor: 21String constructor: ok again!14細節問題注釋已經寫的比較清楚了,總結一下,其實this主要要三種用法:表示對當前對象的引用!2、表示用類的成員變量,而非函數參數,注意在函數參數和成員變量同名是進行區分!其實這是第一種用法的特例,比較常用,所以那出來強調一下。

15、3、用于在構造方法中引用滿足指定參數類型的構造器(其實也就是構造方法)。

16、但是這里必須非常注意:只能引用一個構造方法且必須位于開始!還有就是注意:this不能用在static方法中!所以甚至有人給static方法的定義就是:沒有this的方法!雖然夸張,但是卻充分說明this不能在static方法中使用!這個this肯定是用在某個類的方法里吧?呵呵,我們繼續往下說。

17、舉個例子:public class persion{ private String name=null; private int age; public void setName(String name){ this.name=name;} public String getName(){ return name;}} 在這個類中setName方法中第一個變量用this是為了和本方法的參數this做區別,表示這個name指的是Person這個類的name屬性,而不是name參數,如果去掉這個this,執行完這個方法后,Person類的name屬性仍然為nullgetName方法返回的Person類的name,之所以不用this是因為沒有必要,因為編譯器會知道這個name就指的是Person的name而不是其他的name(因為找個方法沒有name變量和它混淆)。

18、當然,這個方法你也可以顯示的使用return this.name,沒錯。

19、1. this指當前對象。

20、當在一個類中要明確指出使用對象變量或函數時加上this引用。

21、如下面例子中: public class Hello { String s = "Hello"; public Hello(String s){ System.out.println("s = " + s); System.out.println("1 -> this.s = " + this.s); this.s = s; System.out.println("2 -> this.s = " + this.s); } public static void main(String[] args) { Hello x=new Hello("HelloWorld!"); } }運行結果: s = HelloWorld! 1 -> this.s = Hello 2 -> this.s = HelloWorld!在這個例子中,構造函數Hello中,參數s與類Hello的變量s同名,這時直接對s進行操作則是對參數s進行操作。

22、對類Hello的成員變量s進行操作就應該用this進行引用。

23、運行結果的第一行就是直接對構造函數中傳遞過來的參數s進行打印結果;第二行是對成員變量s的打印;第三行是先對成員變量s賦傳過來的參數s值后再打印,所以結果是HelloWorld!2. this作為參數傳遞當你要把自己作為參數傳遞給別的對象時如:public class A { public A() { new B(this).print(); } public void print() { System.out.println("Hello from A!"); } } public class B { A a; public B(A a) { this.a = a; } public void print() { a.print(); System.out.println("Hello from B!"); } } 運行結果: Hello from A! Hello from B! 在這個例子中,對象A的構造函數中,newB(this)把對象A作為參數傳遞給了對象B的構造函數。

24、一、指自己所在的對象。

25、比如在一個方法中,調用其他對象的變量或方法時,可以使用那個對象的對象名,比如aa.abc();而調用自己所在對象的方法或變量時,不知道別人給起了什么名,所以直接用this.abc()就可以了。

26、二、看一個小例子中“this”的用法!/** * @author fengzhi-neusoft * * 本示例為了說明this的三種用法! */package test;public class ThisTest { private int i=0; //第一個構造器:有一個int型形參 ThisTest(int i){ this.i=i+1;//此時this表示引用成員變量i,而非函數參數i System.out.println("Int constructor i——this.i: "+i+"——"+this.i); System.out.println("i-1:"+(i-1)+"this.i+1:"+(this.i+1)); //從兩個輸出結果充分證明了i和this.i是不一樣的! } // 第二個構造器:有一個String型形參 ThisTest(String s){ System.out.println("String constructor: "+s); } // 第三個構造器:有一個int型形參和一個String型形參 ThisTest(int i,String s){ this(s);//this調用第二個構造器 //this(i); /*此處不能用,因為其他任何方法都不能調用構造器,只有構造方法能調用他。

27、 但是必須注意:就算是構造方法調用構造器,也必須為于其第一行,構造方法也只能調 用一個且僅一次構造器!*/ this.i=i++;//this以引用該類的成員變量 System.out.println("Int constructor: "+i+"/n"+"String constructor: "+s); } public ThisTest increment(){ this.i++; return this;//返回的是當前的對象,該對象屬于(ThisTest) } public static void main(String[] args){ ThisTest tt0=new ThisTest(10); ThisTest tt1=new ThisTest("ok"); ThisTest tt2=new ThisTest(20,"ok again!");System.out.println(tt0.increment().increment().increment().i); //tt0.increment()返回一個在tt0基礎上i++的ThisTest對象, //接著又返回在上面返回的對象基礎上i++的ThisTest對象! }}運行結果:Int constructor i——this.i: 10——11String constructor: okString constructor: ok again!Int constructor: 21String constructor: ok again!14細節問題注釋已經寫的比較清楚了,總結一下,其實this主要要三種用法:表示對當前對象的引用!2、表示用類的成員變量,而非函數參數,注意在函數參數和成員變量同名是進行區分!其實這是第一種用法的特例,比較常用,所以那出來強調一下。

28、3、用于在構造方法中引用滿足指定參數類型的構造器(其實也就是構造方法)。

29、但是這里必須非常注意:只能引用一個構造方法且必須位于開始!還有就是注意:this不能用在static方法中!所以甚至有人給static方法的定義就是:沒有this的方法!雖然夸張,但是卻充分說明this不能在static方法中使用!。

本文到此分享完畢,希望對大家有所幫助。

關鍵詞:

X 關閉

X 關閉