这个函数在java中的构造函数中

时间:2013-08-16 11:25:56

标签: java constructor this

这两种类型有什么不同吗?

public class MyClass{
String name;

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

5 个答案:

答案 0 :(得分:5)

不,它们完全相同。有时通过使用this关键字来显式是有用的,因为可能有两个具有相同名称但范围不同的变量,如下所示:

public class MyClass {
    String name;

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

但是既然你不是这种情况,那就没有什么区别了。

答案 1 :(得分:5)

你的情况没有区别。

但在以下情况下有所帮助:

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

答案 2 :(得分:2)

在您的特定案例中,非限定名称会解析为this.name,但在其他情况下可能不是这样。显而易见的情况是构造函数参数具有相同的名称,但还有其他更复杂的情况涉及内部类,其中实际放入this 破坏名称解析。

所以,如果你只对你狭隘和具体的案例感兴趣,答案是明确的,但一般来说你必须警惕Java变量名称解析的细微之处。

答案 3 :(得分:1)

没有区别。 如果参数的名称等于字段名称,则可能需要使用this

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

答案 4 :(得分:0)

没有这样的差异,但必须使用'this'

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

您需要知道为什么我们使用'this'关键字。 所以这是你的answer