Java 布尔实例变量的默认值是true还是false

Java 布尔实例变量的默认值是true还是false,java,instance-variables,Java,Instance Variables,如果在类中创建实例变量,则默认值是true还是false,除非另有更改 将实例变量设置为ex.true,然后将值更改为false并在整个类中使用该变量,这是一种好的做法吗?或者,在使用实例变量时,您应该在概念上避免这一点吗 如果在类中创建实例变量,则为默认值 除非另有更改,否则为真还是假 如果变量类型为布尔型,则默认值为false,原语变量默认值id0,对象变量/参考变量默认值为null 将实例变量设置为ex.true是一种好的做法吗 将该值更改为false并在整个类中使用该变量 你可以这样做,

如果在类中创建实例变量,则默认值是true还是false,除非另有更改

  • 将实例变量设置为ex.true,然后将值更改为false并在整个类中使用该变量,这是一种好的做法吗?或者,在使用实例变量时,您应该在概念上避免这一点吗

  • 如果在类中创建实例变量,则为默认值 除非另有更改,否则为真还是假

    如果变量类型为布尔型,则默认值为false,原语变量默认值id
    0
    ,对象变量/参考变量默认值为
    null

    将实例变量设置为ex.true是一种好的做法吗 将该值更改为false并在整个类中使用该变量

    你可以这样做,这取决于你的要求

    如果在类中创建实例变量,则默认值是true还是false,除非另有更改

    如果成员是基元,则
    false
    。如果是包装器,则
    null

    将实例变量设置为ex.true,然后将值更改为false并在整个类中使用该变量,这是一种好的做法吗?或者,在使用实例变量时,您应该在概念上避免这一点吗

    设置true或false将取决于您的类上下文。一点问题也没有

    例如:您正在创建一个customer对象,并拥有一个实例memeber isActive。如果您的设计允许所有客户默认处于活动状态,那么您是对的。

    • 每个类变量、实例变量或数组组件在创建时都会使用默认值进行初始化(§15.9,§15.10):

      • 对于类型
        byte
        ,默认值为零,即
        (byte)0
        的值

      • 对于类型
        short
        ,默认值为零,即
        (short)0
        的值

      • 对于类型
        int
        ,默认值为零,即
        0

      • 对于类型
        long
        ,默认值为零,即
        0L

      • 对于类型
        float
        ,默认值为正零,即
        0.0f

      • 对于类型
        double
        ,默认值为正零,即
        0.0d

      • 对于类型
        char
        ,默认值为空字符,即
        '\u0000'

      • 对于类型
        boolean
        ,默认值为
        false

      • 对于所有参考类型(§4.3),默认值为
        null

    如果在类中创建实例变量,则默认值是true还是false,除非另有更改

    默认值为
    false
    。()

    将实例变量设置为ex.true,然后将值更改为false并在整个类中使用该变量,这是一种好的做法吗

    我想您的意思是,定义布尔实例变量以便依赖默认初始化是一种好的做法

    答案是:不,这不是好的做法:

    • 定义实例变量以使其对代码读者有意义是一种很好的做法:

          // Good (probably)
          private boolean isValid = true;
      
          // Bad (probably)
          private boolean isNotValid;  // so that I can rely on default init
      
      (现在,如果变量被否定,那么代码可能更容易理解……但关键是,您应该根据什么使代码更容易理解来决定……而不是基于默认初始化。)

    • 在这种粒度级别上花时间担心性能问题是不好的做法。避免显式初始化的性能好处很可能是微不足道的


    这可以通过查看官方文档、教程甚至JLS轻松回答。isInvalid听起来不像isNotValid那么糟糕,如果您想使用false作为默认值,那么您就错过了我的要点。问题不在于名字。问题在于使用
    isInvalid
    idNotValid
    而不是
    isValid
    的动机。我想我明白了,我同意你的看法。我只是建议用另一种方式来编写您选择的特定示例,这对我个人来说更容易接受(我的意思是,一个带有“not”一词的布尔变量看起来很奇怪)。
        // Good (probably)
        private boolean isValid = true;
    
        // Bad (probably)
        private boolean isNotValid;  // so that I can rely on default init