Java 在A=new A()之后是否真的创建了实例?
我假设对象Java 在A=new A()之后是否真的创建了实例?,java,static,Java,Static,我假设对象a是在执行带有注释2的行之后创建的。但什么也没印出来。仅在启用带有注释1的行后,才会打印“A:1中的值”。然后我很困惑,什么时候真正创建了对象?相反,static A A=新的A(1)将打印“A:1中的值”,即使注释1被禁用 有人能解释这背后的机制吗?谢谢。A是封闭类的字段 (非静态)字段在实例化该类的对象时初始化。因此,只有当新Tmp()发生时,a字段才会被“填充” 这就是一切 A是封闭类的字段 (非静态)字段在实例化该类的对象时初始化。因此,只有当新Tmp()发生时,a字段才会被“
a
是在执行带有注释2的行之后创建的。但什么也没印出来。仅在启用带有注释1的行后,才会打印“A:1中的值”。然后我很困惑,什么时候真正创建了对象?相反,static A A=新的A(1)代码>将打印“A:1中的值”,即使注释1被禁用
有人能解释这背后的机制吗?谢谢。A
是封闭类的字段
(非静态)字段在实例化该类的对象时初始化。因此,只有当新Tmp()发生时,a
字段才会被“填充”
这就是一切 A
是封闭类的字段
(非静态)字段在实例化该类的对象时初始化。因此,只有当新Tmp()发生时,a
字段才会被“填充”
这就是一切
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);
}
}