这两者的区别.变量和变量在Java中

  • 本文关键字:变量 Java 区别 java
  • 更新时间 :
  • 英文 :


我不明白这两个代码之间的真正区别,尽管它们都可以工作。

如果我使用这个类:

public class City {
    private String name;

我不明白这两种方法的区别:

public String getName(){
    return this.name;
}

还有这个

public String getName(){
    return name;
}

这两种方法都有效,但是哪一种是最好的,为什么它们都有效?

谢谢你的回答

这两个方法在大多数中是相同的,但不是所有情况。采用以下构造函数:

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

在局部作用域中存在一个name域和一个name域。如果没有this,则隐式地使用局部作用域中的字段(赋值的右侧),但是对于this,我们特别引用字段(赋值的左侧)。在我给出的示例中显示的赋值之前,this.name将具有默认值null(假设它被声明为String name),而name将是构造函数参数的值。

这被称为遮蔽,在JLS中进行了正式讨论。

"this"表示类的实例。

在下面的例子中,"this. "A"是类(=10)中定义的A。而"a"(=20)是在构造函数中定义的局部变量。

详细信息:http://en.wikipedia.org/wiki/Variable_shadowing

的例子:

public class Test
{
    int a = 10;
    public Test()
    {
        int a = 20;
        System.out.println(a); // prints 20
        System.out.println(this.a); // prints the "a" defined in the class. In this case, 10
    }
    public static void main(String[] args)
    {
        new Test();
    }
}

在您的示例中没有区别。你只是选择明确变量是一个类变量。但是如果你这样做:

public String getName(){
    String name = "David";
    return this.name;
}

这意味着很多,因为您不是返回名为name的局部变量,而是返回类变量。

最新更新