为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Cats萌萌 2019-07-10 10:49:20
是在构造函数中初始化变量,还是在外部构造函数中初始化变量?当我使用基于C+知识的Java时,我喜欢使用以下方式初始化变量。public class ME {     private int i;     public ME() {          this.i = 100;     }}过了一段时间,我改变了习惯public class ME {     private int i = 100;     public ME() {     }}我遇到了其他人的源代码,有些使用第一次会议,另一些使用第二次会议。我能知道你们都推荐哪一种会议吗?为什么?
查看完整描述

3 回答

?
慕丝7291255

TA贡献1859条经验 获得超6个赞

我发现第二种风格(一次声明+初始化)更优越。理由:

  • 它一目了然地说明了变量是如何初始化的。通常,当读取一个程序并遇到一个变量时,您首先会看到它的声明(在IDE中通常是自动的)。使用样式2,可以立即看到默认值。对于样式1,还需要查看构造函数。
  • 如果有多个构造函数,则不必重复初始化(而且不能忘记它们)。

当然,如果初始化值在不同的构造函数中不同(甚至在构造函数中计算),则必须在构造函数中这样做。


查看完整回答
反对 回复 2019-07-10
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

我倾向于用第二个避免复杂的构造函数(或者是无用的),我也不认为这是一个初始化(即使它是一个初始化),但更像是提供一个默认值。

例如,在第二个片段中,您可以删除构造函数并有更清晰的代码。


查看完整回答
反对 回复 2019-07-10
?
手掌心

TA贡献1942条经验 获得超3个赞

我的实践(习惯)几乎总是在构造器中初始化,原因有两个,一是它增加了可读性(更干净),二是构造函数中的逻辑控制比一行更多。即使实例变量最初不需要逻辑,如果需要的话,在构造函数中使用它可以提供更大的灵活性来添加逻辑。

至于上面提到的对多个构造函数的关注,很容易通过一个no-arg构造函数初始化所有构造函数的实例变量,然后每个构造函数在第一行调用this()。解决了你的红包问题。


查看完整回答
反对 回复 2019-07-10
  • 3 回答
  • 0 关注
  • 484 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信