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"
}
}
# 1 楼答案
在作用域中没有其他称为
name
的符号(例如,没有局部变量),因此name
指的是与Example.name
相同的东西例如,如果代码中说:
然后最后一行将打印
Vince
,因为此时您将Tony
赋值给局部变量# 2 楼答案
试着回答这个问题
name
是一个static
字段static
表示此字段/属性在同一类型的所有对象之间共享。这意味着,如果我给Example
做一个实例,称之为Nancy
,然后我做了Nancy.name = "Drew"
,这意味着System.out.println(name)
现在等于"Drew"
,因为静态字段在相同类型的所有对象之间共享重点是,通过将字段设置为
static
,可以保证将其更改为Example.name
或this.name
更改为的任何值,这取决于哪个值是最近的链接
this
关键字-https://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html这是一个很好的例子,但有点不同——https://stackoverflow.com/a/47035964/10118965