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();
}
}