2013-07-30 54 views
-3

请只是我的好奇心,可以用来(code example see at line 38th(code edited)布尔(布尔)值切换

Boolean bol = true; 
Boolean bol1 = !bol; 

我的问题是

  • 其应有的方式,或者是有(任何)可能不足,问题为什么要避免使用
  • 是正确的结果是相同的布尔和布尔值
  • 是否有另一种Java数据类型,其中可能切换表达式,逻辑l值
+3

你到底想达到什么目的?我不明白你在问什么。 –

+1

咦?问题在哪里? – Oleksiy

+0

在第58行没有这样的代码。 – Eric

回答

1

是的,这是正确的方法,它可以同时处理布尔和布尔值。

你的“另一种数据类型”可能是整数,用于存储布尔值为0和1,但我不知道谁会这样做,如果我们有真正的布尔值。

在那里,你可以使用这个:

int a = 1; 
int negated = 1-a; 
+0

或更一般的,你可以通过'(a + 1)%n'遍历一个'n'选项列表。 –

6

第二个指令将抛出一个NullPointerException如果bol为null。如果你确定布尔值不为空,那么没问题。

2

是的,它可以。

布尔值可以包含第三个值“null”,布尔值只能包含truefalse

如果你有一个函数

public static void hi(boolean b) {...}; 

public static void main(String[] args){ 
    Boolean b = null; 
    hi(b); // ... throws a NullPointerException at Runtime only 
} 

这就是所谓的自动装箱,因为Reflection需要与包真正的类。

思考也有

Void (realy wired in real code) 
Integer 
Float 
Enum (sometimes) 
+1

反射与布尔的存在有什么关系?布尔值在反射之前。主要是因为集合只存储对象,并且因为有时需要一个可空布尔值。 –

+0

'boolean []'也是一个集合 - 在这里没有明确需要'Boolean',即使集合可以包含一个Container来仅存储布尔值。但是你不能用'hi(int b)'中的'Boolean'来识别'hi'。 –

+0

boolean []是一个数组。而布尔是只存储布尔值的标准容器。正如我所说,布尔从Java的一开始就存在,当时反​​射还没有存在。 –