2013-08-16 27 views
-1

這兩種類型有什麼不同?這個函數在java的構造函數中

public class MyClass{ 
String name; 

public MyClass(String nn){ 
this.name = nn; 
name = nn; 
} 
} 
+0

哪個代碼?如果你問'this.name = nn'和'name = nn'之間的區別,那麼對於這種情況沒有區別 – user902383

+0

@ user902383我編輯它... – Sajad

回答

5

不,它們完全相同。有時它是有用的是通過使用this關鍵字明確,因爲可能有兩個變量名稱相同,但不同的範圍,就像這樣:

public class MyClass { 
    String name; 

    public MyClass(String name) { 
     name = name; // Obviously doesn't work 
     this.name = name; // Now it works. 
    } 
} 

但既然你是不是在這種情況下,它不會使一個區別。

+0

不錯,請參閱我以前的問題:http:// stackoverflow。 com/questions/18177249/initialize-variable-with-constructor – Sajad

5

不,你的情況沒有區別。

,而且有利於在這樣的情況:

public MyClass(String name){ 
this.name = name; //works 
name = name; // doesn't 
} 
1

沒有區別。 如果參數的名稱等於字段名稱,則可能需要使用this

public MyClass(String name){ 
    this.name = name; 
} 
+0

不錯,請參閱我以前的問題:http://stackoverflow.com/questions/18177249/initialize-variable-with-constructor – Sajad

2

在你特別情況下,不合格的名稱解析爲this.name,但在其他情況下,這可能並非如此。顯而易見的情況是,當構造函數參數具有相同的名稱時,但是還有其他更復雜的涉及內部類的情況,其中實際將名稱解析放入this轉換品。因此,如果您只對狹義和特定情況感興趣,答案是明確的,但總的來說,您必須警惕Java的變量名稱解析的微妙之處。

+0

不錯,請參閱我以前的問題: http://stackoverflow.com/questions/18177249/initialize-variable-with-constructor – Sajad

0

有沒有這樣的差異,但「這」必須使用

public MyClass(String name){ 
     this.name = name; // it works 
     name = name; // it doesn't 
} 

你需要知道爲什麼我們使用「這個」關鍵字。 所以這裏是你的answer