我有一些案例,其中第一个似乎改变了布尔值,第二个没有!这两者之间是否存在真正的区别:
boolean x = true;
if (x != true) {}
if (!x) {}
答案 0 :(得分:1)
不,没有。
虽然某些人认为第二个成语更优雅(不那么繁琐和冗长)。
有一个问题!
!=
运算符用于对象引用相等,因此在包含Boolean
s而不是基元的边缘情况下...
Boolean b0 = new Boolean("true"); // value true
Boolean b1 = new Boolean("true"); // value true as well
System.out.println(!b0); // prints false
System.out.println(!b1); // prints false too
System.out.println(b0 != b1); // references not equal, prints true!
<强>输出强>
true
答案 1 :(得分:0)
两个句子之间没有区别。 x != true
等于!x
如果将布尔变量与相等比较器进行比较,则可能会引入错误。例子:
if (x == false) {} // executes the "if" body when "x" is false
if (!x) {} // same of previous example, executes the "if" body when "x" is false
if (x = false) {} // assign the "false" value to x, and never executes the "if" body
最后一个例子使用单个&#34; =&#34;字符,并分配一个值。第一个例子使用两个&#34; =&#34;字符,并比较两个值而不指定任何内容。
答案 2 :(得分:0)
在java !=
表示不相等,!
表示不是这样:
x != ture // X not equal true (x = false)
!x // Not x (x = true, not x = false)
所以他们是平等的。