2014-02-22 180 views
4
  1. 如果你在类中创建了一个实例变量,那么默认值是true还是false,直到否则改变?是一个布尔实例变量默认值true或false

  2. 是否有一个实例变量为ex的好习惯。那么将该值更改为false并在整个班级中使用该变量?或者,你应该从概念上避免使用实例变量?

+3

这可以通过官方文档,教程甚至JLS轻松解答。 –

回答

7

如果你在一个类中创建一个实例变量,是默认值true或false,直至以其他方式改变了吗?

默认值是false。 (JLS 4.12.5

是否有一个实例变量为ex的好习惯。那么将该值更改为false并在整个班级中使用该变量?

我假设你的意思是,定义你的布尔实例变量是一个很好的习惯,这样你就可以依靠默认的初始化。

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

  • 这是很好的做法让他们有意义的代码的阅读器来定义实例变量:

    // Good (probably) 
        private boolean isValid = true; 
    
        // Bad (probably) 
        private boolean isNotValid; // so that I can rely on default init 
    

    (现在,它可能使你的代码更容易理解,如果变量是否定的...但重点是,你应该决定什么使得代码容易t Ø了解 ...不是基于利用默认初始化。)

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

+0

isInvalid听起来不像isNotValid那样糟糕,如果你想使用false作为默认值 – zod

+0

你错过了我的观点。问题不在于名称。问题是使用'isInvalid'或'idNotValid'而不是'isValid'的**动机**。 –

+0

我想我明白了,我认为我同意你的看法。我只是提出了一种不同的方式来编写你选择的特定例子,这个例子对我个人来说更加可以接受(我的意思是,一个布尔变量中带有“not”的单词看起来很奇怪)。 – zod

3

,如果你在一个类中创建一个实例变量,是默认值 真或假,直到以其它方式改变?

如果变量是布尔类型,则默认值是假的,原语的变量默认值id 0,对象变量/引用变量的默认值是null

它是很好的做法,有一个实例变量如前。 true然后 将该值更改为false并在整个班级中使用该变量?

您可以做到这一点,这取决于您的要求。

1

如果你在一个类中创建了一个实例变量,那么默认值是true还是false,直到否则改变?

如果该成员是原始的,那么false。如果它是一个包装,那么null

是否有一个实例变量为ex的好习惯。那么将该值更改为false并在整个班级中使用该变量?或者,你应该从概念上避免使用实例变量?

设置true或false将取决于您的类上下文。它根本没有问题。

例如:您正在创建一个客户对象并拥有一个实例注册表isActive。如果您的设计允许所有客户默认活动,那么哟是正确的。

4

JLS 4.12.5

  • 每个类变量,实例变量,或阵列部件被初始化时创建它的默认值(§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

1
when you crate a variable of boolean 
public class check { 
static boolean b; 
    public static void main(String args[]) { 
      System.out.print("The Default Value of Boolean is="+b); 
    } 
    } 

enter image description here

相关问题