可能重複:
Does 「this」 have any advantage?
Do you prefix your instance variable with 'this' in java ?有關實例變量初學Java的問題
當指定/引用一個實例變量,有什麼this.foo
之間的差別,並簡單地foo
?前者是否會帶來性能上的好處,還是僅僅是慣例?
可能重複:
Does 「this」 have any advantage?
Do you prefix your instance variable with 'this' in java ?有關實例變量初學Java的問題
當指定/引用一個實例變量,有什麼this.foo
之間的差別,並簡單地foo
?前者是否會帶來性能上的好處,還是僅僅是慣例?
性能沒有差別,編譯器會創建完全相同的字節碼。
this.foo
對於foo
是一個實例變量更爲明確。
在某些情況下,這甚至是必要的,否則會foo
指一個局部變量,例如在
public void setFoo(String foo){
this.foo = foo;
}
一個很好的例子是在構造函數中。 – Flash 2011-05-15 05:33:43
this.foo是有用的只是個案:
func(int foo){
this.foo = foo;
}
func1(){
foo=0;
}
我想你明白兩者之間的區別,因爲在func
中,您需要this
來引用對象的實例變量。但在func1
這是不需要的。
陳述'this.foo'幾乎不需要實例變量。只需要明確說明,例如,如果一個具有相同名稱的局部變量被傳入了一個方法,其中實例變量也被引用。例如:
someMethod(int num){
this.num=num
}
但是,這可能不是很好的約定,你應該丟棄類似命名的局部變量以獲得更好的效果。
否則,這個變量可以讓代碼更容易被人讀取。這是一個紅旗,他們正在查看一個實例變量。老實說,這根本就沒有必要,而且代碼在沒有它的情況下可讀性足夠好。
這個問題及其變種之前被問了幾次(我的確因爲這個原因而關閉了),我相信你會發現上面的鏈接很有幫助。 – MByD 2011-05-15 05:31:38