Boolean and == vs =
语言是Java。
鉴于这种:
1 2 3 4 5 6 7 |
我知道
你能解释为什么吗? 谢谢!
1 2 | identifier = literal; if (identifier) |
首先,您将文字分配给标识符。然后您在分配后对其进行测试
很好,它们都返回true的原因仅仅是因为两个表达式都为true。
b1 = true是一个赋值->您告诉java b1是true,并且当它求值时它变为true,因为在这里您只是说b1是true。
b1 == true是一个条件->这行是有意义的,因为您现在正在检查b1的[value]是否等于true,并且根据b1是true来求值为true或false。请注意,您可以只写b1,因为它已经是布尔值(真或假)。
我认为您没有意识到这一点,但您使用的是对象类型的布尔值,而不是原始类型的布尔值。如果您真的不知道Java中基于对象的类型和原始类型之间的区别,则应坚持使用小写的b。
顺便说一句,我不知道Java允许赋值用作表达式。
当你写
1 | b1 = true; |
当你写
1 | if(b1 = true) |
首先完成分配,然后对表达式求值,并且表达式求值为