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

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

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

MMMHUHU 2019-08-27 10:41:46
默认构造函数与内联字段初始化默认构造函数与直接初始化对象字段之间的区别是什么?有什么理由更喜欢以下示例中的一个而不是另一个?例1public class Foo{     private int x = 5;     private String[] y = new String[10];}例2public class Foo{     private int x;     private String[] y;     public Foo()     {         x = 5;         y = new String[10];     }}
查看完整描述

3 回答

?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

初始化器在构造函数体之前执行。(如果您同时具有初始化器和构造函数,则构造函数执行第二个并覆盖初始化值,这会产生影响)

当您总是需要相同的初始值时(例如,在您的示例中,给定大小的数组或特定值的整数),初始化器很好,但它可以对您有利或对您有用:

如果你有许多构造函数以不同的方式初始化变量(即具有不同的值),那么初始化程序是无用的,因为更改将被覆盖并且浪费。

另一方面,如果你有许多构造函数初始化相同的值,那么你可以通过在一个地方保持初始化来保存代码行(并使代码稍微更易于维护)。

就像Michael说的那样,也有一些品味问题 - 你可能希望将代码放在一个地方。虽然如果你有很多构造函数,你的代码在任何情况下都不在一个地方,所以我倾向于初始化者。


查看完整回答
反对 回复 2019-08-27
?
慕桂英4014372

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

更喜欢第一个例子的原因是它对于更少的代码(总是好的)具有相同的功能。

除此之外,没有区别。

但是,如果你有明确的构造函数,我宁愿将所有初始化代码放入那些(并链接它们),而不是在构造函数和字段初始化器之间拆分。


查看完整回答
反对 回复 2019-08-27
  • 3 回答
  • 0 关注
  • 427 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号