2011-05-15 35 views
-1

可能重複:
Does 「this」 have any advantage?
Do you prefix your instance variable with 'this' in java ?有關實例變量初學Java的問題

當指定/引用一個實例變量,有什麼this.foo之間的差別,並簡單地foo?前者是否會帶來性能上的好處,還是僅僅是慣例?

+0

這個問題及其變種之前被問了幾次(我的確因爲這個原因而關閉了),我相信你會發現上面的鏈接很有幫助。 – MByD 2011-05-15 05:31:38

回答

2

性能沒有差別,編譯器會創建完全相同的字節碼。

this.foo對於foo是一個實例變量更爲明確。

在某些情況下,這甚至是必要的,否則會foo指一個局部變量,例如在

public void setFoo(String foo){ 
    this.foo = foo; 
} 
+0

一個很好的例子是在構造函數中。 – Flash 2011-05-15 05:33:43

1

this.foo是有用的只是個案:

func(int foo){ 
this.foo = foo; 
} 
func1(){ 
foo=0; 
} 

我想你明白兩者之間的區別,因爲在func中,您需要this來引用對象的實例變量。但在func1這是不需要的。

1

陳述'this.foo'幾乎不需要實例變量。只需要明確說明,例如,如果一個具有相同名稱的局部變量被傳入了一個方法,其中實例變量也被引用。例如:

someMethod(int num){ 
this.num=num 
} 

但是,這可能不是很好的約定,你應該丟棄類似命名的局部變量以獲得更好的效果。

否則,這個變量可以讓代碼更容易被人讀取。這是一個紅旗,他們正在查看一個實例變量。老實說,這根本就沒有必要,而且代碼在沒有它的情況下可讀性足夠好。