以下static可以输出运行结果
public class Nr{
static int x;
public static void main(String[] str){
Nr.x = 3;
Nr nr = new Nr();
nr=null;
System.out.println(nr.x);
}
}
static int x;
-
x
是一个静态变量,属于类Nr
,不属于某个具体对象。 -
静态变量的内存分配是在类加载时完成的,是共享的。
🔹 Nr.x = 3;
-
给静态变量
x
赋值为 3。 -
所有对
Nr.x
的访问现在都会得到 3。
🔹 Nr nr = new Nr(); nr = null;
-
创建了一个
Nr
的实例(虽然没有使用),然后将引用nr
置为null
。 -
此时
nr
已经不指向任何对象。
🔹 System.out.println(nr.x);
-
看起来是通过
nr
访问x
,但其实是访问静态变量。 -
Java 语法允许通过对象引用访问静态变量,虽然这是 不推荐 的写法。
-
访问的是类变量
x
,和nr
是否为 null 没有关系。 -
因此输出为:
3
写小说也写代码,左手架空世界,右手现实逻辑。
📚 欢迎来看博客,起点同笔名在写小说,欢迎来找我玩。
https://my.qidian.com/author/433910170/