这可能是一个“重复”,但我不知道如何搜索这个问题......
我在声明行初始化一个非静态成员变量:
public class A
{
private B b = new B();
...
}
我正在这样做,而不是在默认构造函数中初始化这个变量:
public class A
{
private B b;
public A()
{
b = new B();
}
...
}
两者之间有什么区别,除了(也许)前者不是“ANSI Java”或类似的东西?
对于上面的两个实现,我得到了两个不同的字节码(即两个不同的“类”文件),这让我相信可能存在运行时差异。
所以我想知道我是否有任何理由期望在运行时有什么不同。
谢谢