有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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"
    }
}

共 (2) 个答案

  1. # 1 楼答案

    在作用域中没有其他称为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. # 2 楼答案

    试着回答这个问题

    name是一个static字段static表示此字段/属性在同一类型的所有对象之间共享。这意味着,如果我给Example做一个实例,称之为Nancy,然后我做了Nancy.name = "Drew",这意味着System.out.println(name)现在等于"Drew",因为静态字段在相同类型的所有对象之间共享

    重点是,通过将字段设置为static,可以保证将其更改为Example.namethis.name更改为的任何值,这取决于哪个值是最近的

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

    这是一个很好的例子,但有点不同——https://stackoverflow.com/a/47035964/10118965