!=和=有什么区别! 在Java中?
我正在查看一些模拟的OCJP问题。 我遇到了一个令人困惑的语法。 这里是:
class OddStuff { public static void main(String[] args) { boolean b = false; System.out.println((b != b));// False System.out.println((b =! b));// True } }
为什么输出在!=
和=!
之间变化=!
?
问题就在于玩混淆空格。
b != b
是通常的!=
(不等于)比较。
另一方面:
b =! b
b =! b
更好地写成b = !b
这被parsing为:
b = (!b)
因此,这是两个运营商。
- 首先倒置
b
。 - 然后将其分配给
b
。
赋值运算符返回分配的值。 因此, (b =! b)
计算结果为真 – 这就是你打印的内容。
b != b
意思是! (b == b)
! (b == b)
:与b == b
相反。
b =! b
b =! b
实际上是b = !b
,一个赋值。 这是切换b
的价值。 赋值评估为expression式的值,所以这将评估为!b
(同时已经改变了b
的值)。
b=!b
是一项任务。 它将b
赋值给!b
,expression式求值为结果值,这是true
。
b =! b
你正在做一个任务,你是说B应该有!B的价值。
b!= b
你在问B是不是和B不一样