Java中字段的简单解释

Simple explanation of fields in Java

最后一个打印语句不应该输出"Vince"吗?我想知道为什么它没有以及它背后的概念。

参见下面的代码:

public class Example
{
   static String name;

   public static void main(String[] args)
   {
        Example.name = "Vince";
        System.out.println(Example.name) // will print "Vince"

        name = "Tony";
        System.out.println(name); // will still print "Tony"

        System.out.println(Example.name); // will print "Tony"
    }
}

范围内没有其他符号称为 name(例如,没有局部变量),因此 name 指的是与 Example.name 相同的东西。

如果代码表示,例如:

String name; // a local variable with the same name
name = "Tony";
System.out.println(name); // will still print "Tony"

System.out.println(Example.name);

那么最后一行 打印 Vince,因为这样你就将 Tony 赋值给局部变量。

尝试 2 回答这个问题。

name 是一个 static 字段。 static 意味着这个 field/attribute 被所有相同类型的对象共享。这意味着如果我要创建 Example 的实例,将其命名为 Nancy,然后我创建 Nancy.name = "Drew",这意味着 System.out.println(name) 现在等于 "Drew" 因为静态字段在同一类型的所有对象之间共享。

要点是,通过将字段设置为 static,它可以保证更改为 Example.namethis.name 更改为的任何值,具体取决于哪个值更新.

link this 关键字 - https://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html

这是一个很好的例子,但有点不同 -