java在声明中赋值还是在构造函数中赋值?
这两者之间是否存在差异:
public class A {
B b;
A() {
b=new B();
}
}
这是:
public class A {
B b=new B();
A() {
}
}
如果有,是什么?什么是更好的实践? 如果没有,推荐什么
你可以在下面搜索框中键入要查询的问题!
这两者之间是否存在差异:
public class A {
B b;
A() {
b=new B();
}
}
这是:
public class A {
B b=new B();
A() {
}
}
如果有,是什么?什么是更好的实践? 如果没有,推荐什么
# 1 楼答案
据我所知,只要你只有一个构造函数,就没有区别。如果你有多个构造函数,你需要确保它被分配到所有的构造函数中。因此,我建议采用第二种方法
# 2 楼答案
构造函数在初始化实例变量后运行,因此存在差异。在一个小例子中,这并不重要,但在更复杂的代码中,这可能很重要。(请注意,代码的顺序无关紧要。如果初始化在构造函数中,它将以秒为单位运行。)
第二种方法更方便,所以我倾向于从它开始。不过,第一种方法可能更有用(用于控制反转和多态性),因此它通常用于“真实”代码中
输出:
输出:
# 3 楼答案
他们之间有很大的区别
在第一个选项中,B类仅在调用不带参数的构造函数时实例化。如果您放置并调用任何参数化构造函数,则类B将不会实例化
但在第二个选项的情况下,不管调用什么构造函数,B类都会实例化