new运算符在构造函数或类主体中的位置

got*_*ast 5 java constructor new-operator

这可能是一个愚蠢的问题,但如果你在一个类的构造函数中使用一个新对象,或者你是否在类体中有对象/变量的相反,那么它是否重要?

public class MyFrame extends JFrame {

    private JButton button1;
    private JButton button2;

     public MyFrame(){

        button1 = new JButton("Button1");
        button2 = new JButton("Button2");
    }

}
Run Code Online (Sandbox Code Playgroud)

public class MyFrame extends JFrame {

    private JButton button1 = new JButton("Button1");
    private JButton button2 = new JButton("Button2");

     public MyFrame(){

    }

}
Run Code Online (Sandbox Code Playgroud)

Mat*_*son 0

当初始化值可用并且初始化可以放在一行上时,在类主体中初始化对象效果很好。然而,这种形式的初始化由于其简单性而具有局限性。如果初始化需要一些逻辑(例如,错误处理或用于填充复杂数组的 for 循环),则简单的赋值是不够的。

实例变量可以在构造函数中初始化,其中可以使用错误处理或其他逻辑。为了为类变量提供相同的功能,Java 编程语言包含静态初始化块

更多信息在这里:http ://docs.oracle.com/javase/tutorial/java/javaOO/initial.html