是否在其声明中初始化变量会使其每次调用时都重新创建?

时间:2015-06-25 13:53:06

标签: java

我通常会避免这样做,但我偶尔在一些代码示例中偶然发现这一点,我想知道。

例如,你有这个:

private Object obj;

public void someMethod() {
   obj = new Object();
}

因此,只有在调用someMethod()时才会初始化对象。

但如果变量声明如下:

private Object obj = new Object();

稍后当我在某处使用obj变量时,这种声明是否会在每次引用时创建一个新实例?

2 个答案:

答案 0 :(得分:1)

如果一个字段有一个初始化语句,那么在创建实例时,它将使用该语句的值恰好初始化一次。换句话说,当您实例化一个类时,将运行其实例字段初始值设定项和初始化程序块,然后执行构造函数体。

访问字段不会再触发其字段初始化语句(如果事件有一个)。

答案 1 :(得分:0)

您使用(惊喜)“新”'创建新实例。关键词。 ' new Object()'将调用Object()的构造函数并返回Object的新实例。对于所有(非抽象)类,即使没有显式构造函数的类也是如此,因为每个类都有一个默认构造函数。