gpt4 book ai didi

java - A a = new A()之后真的创建了实例吗?

转载 作者:行者123 更新时间:2023-12-01 16:47:30 25 4
gpt4 key购买 nike

public class Tmp {
public static void main(String[] s) {
//new Tmp(); //comment 1
}
A a = new A(1); //comment 2
}

class A {
A(int i) {
System.out.println("value in A: " + i);
}
}

我假设了对象a在执行带有 comment 2 的行后创建。但什么也没打印出来。仅在启用带有 comment 1 的行后,才会打印“value in A: 1”。然后我很困惑,对象什么时候真正创建的?相比之下,static A a = new A(1);即使禁用了注释 1 的行,也会打印“A 中的值:1”。

谁能解释一下这背后的机制吗?谢谢。

最佳答案

A a 是封闭类的字段。

(非静态)字段在实例化该类的对象时被初始化。因此,仅当发生 new Tmp() 时,您的 a 字段才会“填充”

这就是全部内容了。

关于java - A a = new A()之后真的创建了实例吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47237540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com