默认构造函数与内联字段初始化

默认构造函数与内联字段初始化

默认构造函数与直接初始化对象字段之间的区别是什么?

有什么理由更喜欢以下示例中的一个而不是另一个?

例1

public class Foo{
    private int x = 5;
    private String[] y = new String[10];}

例2

public class Foo{
    private int x;
    private String[] y;

    public Foo()
    {
        x = 5;
        y = new String[10];
    }}


MMMHUHU
浏览 428回答 3
3回答

qq_遁去的一_1

初始化器在构造函数体之前执行。(如果您同时具有初始化器和构造函数,则构造函数执行第二个并覆盖初始化值,这会产生影响)当您总是需要相同的初始值时(例如,在您的示例中,给定大小的数组或特定值的整数),初始化器很好,但它可以对您有利或对您有用:如果你有许多构造函数以不同的方式初始化变量(即具有不同的值),那么初始化程序是无用的,因为更改将被覆盖并且浪费。另一方面,如果你有许多构造函数初始化相同的值,那么你可以通过在一个地方保持初始化来保存代码行(并使代码稍微更易于维护)。就像Michael说的那样,也有一些品味问题 - 你可能希望将代码放在一个地方。虽然如果你有很多构造函数,你的代码在任何情况下都不在一个地方,所以我倾向于初始化者。

慕桂英4014372

更喜欢第一个例子的原因是它对于更少的代码(总是好的)具有相同的功能。除此之外,没有区别。但是,如果你有明确的构造函数,我宁愿将所有初始化代码放入那些(并链接它们),而不是在构造函数和字段初始化器之间拆分。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java