首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java初始化ivars

用Java初始化ivars
EN

Stack Overflow用户
提问于 2013-11-28 18:11:15
回答 3查看 792关注 0票数 1

声明和设置默认ivars之间是否有区别或首选项,如:

代码语言:javascript
复制
public class Foo
{
   private int yes = 0;
   private String name = "";

   //...
   //constructors, setters, getters, etc.
}

代码语言:javascript
复制
public class Foo
    {
       private int yes;
       private String name;

       public Foo()
       {
          yes = 0;
          name = "";
       }
       //...
       //setters, getters, etc.
    }

另外,在constructorsFoo中的其他方法中,我应该使用accessormutator方法设置和获取ivars,还是直接分配它们呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-28 18:14:55

原语类型(在本例中为int)是由默认值自动初始化的,因此没有理由显式地将其设置为0

那么Strings和其他对象呢?这完全取决于您的首选项。我不喜欢在构造函数中初始化它。但是请记住,在构造函数中初始化字段的情况下,如果字段初始化引发某些异常,则可以处理异常。

票数 0
EN

Stack Overflow用户

发布于 2013-11-28 18:16:43

同样的事情。外部类将需要访问器和变异器方法。

票数 0
EN

Stack Overflow用户

发布于 2013-11-28 18:17:20

这不重要,这基本上是个人偏好。Java编译器将初始化从类复制到每个构造函数(没有额外的调用,它实际上是字节码中的直接副本)。

就个人而言,我更喜欢将独立于数据的初始化放到类中,而将可能依赖于构造函数参数的数据放到构造函数本身。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20272490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档