Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 成员初始化与构造函数初始化_Java_Oop - Fatal编程技术网

Java 成员初始化与构造函数初始化

Java 成员初始化与构造函数初始化,java,oop,Java,Oop,两个声明之间是否有差异。有什么利弊吗?哪个是首选 class Car { CarLoan loan= new CarLoan(); } VS 我认为成员初始化是在构造函数调用之前调用的。还有其他区别吗?如果您有两个或多个构造函数,并且每个构造函数的初始化值都不同,那么您应该使用构造函数初始化,因为无法对成员初始化执行相同的操作 但是,如果您只有一个构造函数……您可以使用成员初始化来提高代码的清晰度……最后两个示例之间没有区别 但是,如果您有多个成员,则直接初始化的成员将在调用构造函数中的

两个声明之间是否有差异。有什么利弊吗?哪个是首选

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


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

如果您有两个或多个构造函数,并且每个构造函数的初始化值都不同,那么您应该使用构造函数初始化,因为无法对成员初始化执行相同的操作


但是,如果您只有一个构造函数……您可以使用成员初始化来提高代码的清晰度……

最后两个示例之间没有区别

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

您只需将其视为将所有直接初始化的meber内联到所有构造函数中


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

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

Java还是C#?它们的行为不同,在基/超类构造函数调用的顺序方面。@JonSkeet感谢Jon。Plz在Java中解释,更新了问题。在Java中,我相信两者是等价的。一般来说,使用你觉得更清楚的,避免重复你自己。所以在这种情况下,我更喜欢第一个,它避免在每个构造函数中重复。在car构造函数中,构造car对象,对CarLoan也是如此。初始化块可用于处理成员初始化的条件执行。这段代码运行良好。公共级汽车{卡洛安贷款{如果(3)
class Car
{
   CarLoan loan;

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