this0編譯
㈠ 本人java新手菜鳥,請問java this關鍵字到底指的是成員變數還是方法里的參數值
有this表示的是成員變數,沒有this修飾的就近原則,那個離他進就是哪個。比如成員變數跟參數都是握乎尺同一個名(例 int age)。在方法裡面,有this修飾的就是表示成員,沒有的就是參數。都沒有修飾,就表示是離他近的參數啦。。
當然這個回答只是回答了你的問題、
擴展一下內容吧=====
(當虛擬機創建一個對象,會創建一個指針指向自己)this就表示引用自己的指針,所以在靜態或靜態的代碼快中不能有this,因為沒有創建對象。
總結一下,其實this主要要三種用法:
1、表示頃行對當前對象的引用!
2、表示用類的成員變數,而非函數參數,注意在函數參數和成員變數同名是進行區分!其實這是第一種用法的特例,比較常用,所以那出來強調一下。
3、用於在構造方法中引用滿足指定參數類型的構造器(其實也就是構造方法)。但是這里必須非常注意:只能引用一個構造方法且必須位於開始!
還有就是注意:this不能用在static方法中!所以甚至有人給static方法的定義就是:沒有this的方法!雖然誇張,但是卻充分說明this不能在static方法中使用!
說明在什麼情況下需要用到this:
第一、通過this調用另一個構造方法,用發是this(參數列表),這個僅僅在類的構造方法中,別的地方不能這么用。
第二、函數參數或者函數中的局部變數和成員變數同名的情況下,成員變數被屏蔽,此段高時要訪問成員變數則需要用「this.成員變數名」的方式來引用成員變數。當然,在沒有同名的情況下,可以直接用成員變數的名字,而不用this,用了也不為錯,呵呵。
第三、在函數中,需要引用該函所屬類的當前對象時候,直接用this。
其實這些用法總結都是從對「this是指向對象本身的一個指針」這句話的更深入的理解而來的,死記不然容易忘記而且容易搞錯,要理解!
㈡ JAVA一個類有兩個構造函數,當在一個構造函數中調用另外一個構造函數時為什麼要用this.()而不能用類名.()
this()這個能表示是當前對象的構造方法,不會弄兩個對象出來。this有個作用就是表示自己類的對象。所以除非想弄兩個對象,否則構造掉構造就要加this。操作方法如下:
1、首先,先寫一個完整數據,這是一個最原始的構造方法,如圖。