成员初始化Vs构造函数初始化

时间:2013-02-16 17:54:43

标签: java oop

两个声明之间是否存在差异?有什么优点和缺点?哪个是首选。

class Car
{
   CarLoan loan= new CarLoan();
}

VS

class Car
{
   CarLoan loan;

   Car()
   {
       loan = new CarLoan();
   }
}

我认为在构造函数调用之前调用成员初始化。还有其他差异吗?

3 个答案:

答案 0 :(得分:1)

如果你有两个或更多的构造函数,并且每个构造函数的初始化值不同,那么你应该使用构造函数初始化,因为没有办法对成员初始化做同样的事情......

但是如果你只有一个构造函数......你可以使用成员初始化来获得更好的代码清晰度......

答案 1 :(得分:0)

最后两个例子之间没有区别。

但是如果你有多个成员,则在调用被调用的构造函数中的代码之前构造直接初始化成员。

你只需要把它想象成在所有构造函数中内联所有直接初始化的mebers。

在对象创建期间,您可以在Eclipse调试器中很好地看到它。

答案 2 :(得分:0)

如果您使用预初始化(成员初始化),那么JVM将像 final 关键字一样获得速度提升。使用默认值初始化类成员。这是一个好处。 您是代码的所有者。我同意在某些情况下您可能会更改默认值然后更改它并使用构造函数。 我希望它有所帮助。