此函数在java的构造函数中使用

此函数在java的构造函数中使用,java,constructor,this,Java,Constructor,This,这两种类型有什么不同吗 public class MyClass{ String name; public MyClass(String nn){ this.name = nn; name = nn; } } 不,它们完全相同。有时,使用this关键字显式是很有用的,因为可能有两个变量具有相同的名称但作用域不同,如下所示: public class MyClass { String name; public MyClass(String name) { na

这两种类型有什么不同吗

public class MyClass{
String name;

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

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

public class MyClass {
    String name;

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

但是,既然你不在这种情况下,那也没什么区别。

不,你的情况没有区别

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

public MyClass(String name){
this.name = name; //works
name = name;  // doesn't
}
没有区别。 如果参数的名称等于字段名,则可能需要使用此选项

public MyClass(String name){
    this.name = name;
}
在您的特定情况下,非限定名称解析为this.name,但在其他情况下可能并非如此。最明显的情况是,构造函数参数具有相同的名称,但也有其他更复杂的情况涉及到内部类,实际放入该参数会破坏名称解析


因此,如果您只对自己的狭隘和具体情况感兴趣,答案是明确的,但一般来说,您必须警惕Java变量名解析的微妙之处。

没有这种区别,但必须使用“this”

public MyClass(String name){
       this.name = name; // it works
       name = name;  // it doesn't
}
你需要知道为什么我们使用“this”关键字。
这是您的

哪些代码?如果您询问this.name=nn和name=nn之间的区别,则在这种情况下没有difference@user902383我编辑它…很好,请看我以前的问题:很好,请看我以前的问题:很好,请看我以前的问题: