Java 在类主体或构造函数中初始化类成员?
这两种初始化类成员的方法有什么区别吗 在班集体中:Java 在类主体或构造函数中初始化类成员?,java,constructor,initialization,Java,Constructor,Initialization,这两种初始化类成员的方法有什么区别吗 在班集体中: public class A { private mB = new B(); public A() { } } 或在构造函数中: public class A { private mB = null; public A() { mB = new B(); } } 我会做你认为更简单的 主要区别在于,如果在第一个构造函数中添加另一个构造函数,则不必重复初始化。我将使用您认为更简单
public class A {
private mB = new B();
public A() {
}
}
或在构造函数中:
public class A {
private mB = null;
public A() {
mB = new B();
}
}
我会做你认为更简单的
主要区别在于,如果在第一个构造函数中添加另一个构造函数,则不必重复初始化。我将使用您认为更简单的构造函数
主要区别在于,如果在第一个构造函数中添加另一个构造函数,则不必重复初始化。实例初始化器首先运行,然后初始化构造函数中的值。您可以研究首先运行实例初始值设定项,然后初始化构造函数中的值。您可以研究如果B()构造函数抛出了一个选中的异常,那么
private mB = new B();
这将是一个编译时错误,而在构造函数中,您可以捕获它或在throws
子句中声明它,如果B()构造函数抛出了一个选中的异常,那么
private mB = new B();
这将是一个编译时错误,而在构造函数中,您可以捕获它或在
throws
子句中声明。理论上,初始化顺序不同。这是JVM使用的序列:
此外,如果您初始化构造函数中的字段,这可能意味着您可能会得到一些重复。我个人认为,无论是在构造函数中还是在字段中,在何处实例化它们都无关紧要,但主要的一点是,您在这方面是一致的。对我来说,它有助于在字段声明中实例化它们,以便我知道哪些字段始终存在,哪些字段是可选的。希望有帮助 理论上,初始化顺序不同。这是JVM使用的序列:
此外,如果您初始化构造函数中的字段,这可能意味着您可能会得到一些重复。我个人认为,无论是在构造函数中还是在字段中,在何处实例化它们都无关紧要,但主要的一点是,您在这方面是一致的。对我来说,它有助于在字段声明中实例化它们,以便我知道哪些字段始终存在,哪些字段是可选的。希望有帮助 第一个示例初始化变量一次:第二个示例初始化变量两次。第一个是首选的,尤其是当有多个构造函数时,当然,除非涉及异常。第一个示例初始化变量一次:第二个示例初始化变量两次。首先是首选,尤其是如果有多个构造函数,当然除非有例外。我认为两者都是相同的。我认为两者都是相同的