是在构造函数中初始化变量,还是在外部构造函数中初始化变量?

是在构造函数中初始化变量,还是在外部构造函数中初始化变量?

当我使用基于C+知识的Java时,我喜欢使用以下方式初始化变量。

public class ME {
    private int i;

    public ME() {
         this.i = 100;
    }}

过了一段时间,我改变了习惯

public class ME {
    private int i = 100;

    public ME() {
    }}

我遇到了其他人的源代码,有些使用第一次会议,另一些使用第二次会议。

我能知道你们都推荐哪一种会议吗?为什么?


Cats萌萌
浏览 485回答 3
3回答

慕丝7291255

我发现第二种风格(一次声明+初始化)更优越。理由:它一目了然地说明了变量是如何初始化的。通常,当读取一个程序并遇到一个变量时,您首先会看到它的声明(在IDE中通常是自动的)。使用样式2,可以立即看到默认值。对于样式1,还需要查看构造函数。如果有多个构造函数,则不必重复初始化(而且不能忘记它们)。当然,如果初始化值在不同的构造函数中不同(甚至在构造函数中计算),则必须在构造函数中这样做。

开心每一天1111

我倾向于用第二个避免复杂的构造函数(或者是无用的),我也不认为这是一个初始化(即使它是一个初始化),但更像是提供一个默认值。例如,在第二个片段中,您可以删除构造函数并有更清晰的代码。

手掌心

我的实践(习惯)几乎总是在构造器中初始化,原因有两个,一是它增加了可读性(更干净),二是构造函数中的逻辑控制比一行更多。即使实例变量最初不需要逻辑,如果需要的话,在构造函数中使用它可以提供更大的灵活性来添加逻辑。至于上面提到的对多个构造函数的关注,很容易通过一个no-arg构造函数初始化所有构造函数的实例变量,然后每个构造函数在第一行调用this()。解决了你的红包问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java