回答
注意<
,<=
,>
和>=
是需要双方一个整数值的二元运算符。编译器抱怨,因为在if条件中&
和<
之间没有任何东西。
此外,您应该了解运营商&
和&&
之间的区别。 (我已经纠正了我的想法差异。见15.22.2. Boolean Logical Operators &, ^, and |和15.23. Conditional-And Operator &&在Java规范的细节。)
与所有的放在一起,正确的代码是
if (25 <= si && si < 30)
最后,对于未来如果您复制并修改了确切的错误消息,那么这对我们回答您的问题将会非常有帮助。通常,解释失去了我们需要帮助你的许多细节。
正如你需要使用符号两次
即&&
是所有Java布尔运营商和
|| is for or
因此您的解决方案应该是
(25 <= si && si < 30)
即意味着被大于或等于25且小于30(si = 25 || 26 || 27 || 28 || 29)
不,&&是逻辑的,其中'&&'是短路版本。请参阅http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.22.2 –
正确的语法是
if (25 <= si & si < 30)
注意这是不使用位&
操作!
在这种情况下,&
运算符的LHS和RHS是布尔值,所以Java将使用非短路逻辑AND操作。使用短路逻辑与操作
if (25 <= si && si < 30)
...即:
你也可以这样写。
您应该使用哪种形式?
从语义的角度来看,
&
和&&
都将得到正确的答案,因为左,右子表达式是免费的副作用。从性能的角度来看,我期望两个版本能够被JIT编译器优化为相同(或等效执行)的本地代码。但是,如果优化器不这样做,则在完整应用程序的上下文中考虑时,两个版本之间的性能差异很可能可以忽略不计。从可读性的角度来看,
&&
形式可能是更好的...但只是因为许多Java程序员会误读&
形式,因为他们不明白,&
在Java中不一定按位!
您的最后一点是正确的,只需看看所有其他答案,即错误地指出'&'不是合乎逻辑的。 –
我的答案已修复。我会很感激撤消投票。 (如果是你的,那就是) –
@代码大师 - 事实并非如此。此外,我不知道你的评论与你的评论有关>>我的<<答案... –
- 1. 正确使用memcpy in C
- 2. 正确使用IN与SQL
- 3. MySQL:正确使用“NOT IN”子句
- 4. 正确使用SELECT WHERE NOT IN
- 5. 正确使用Java异常
- 6. 正确使用java泛型?
- 7. 如何正确使用Java
- 8. 正确使用java Commons BeanUtils?
- 9. 如何正确使用Java
- 10. Radiogroup in recyclerview不正确
- 11. Java ...我正确使用'this'吗?
- 12. 在java中正确同步使用
- 13. 正确使用Java中的Bean MVC
- 14. 我是否正确使用Java断言?
- 15. Ant未使用正确的java版本
- 16. 正确使用Java库在斯卡拉
- 17. 如何正确使用枚举java/android
- 18. 如何正确使用java的ulimit?
- 19. 如何在java中正确使用\ n
- 20. 正确使用Java中的Scanner.hasNextLine?
- 21. 使用Java规则集正确
- 22. Android java:正确使用seekbar的progressValue
- 23. Java:正确使用条件语句
- 24. 我使用通知不正确java
- 25. 如何正确使用Java比较器?
- 26. Java正确使用嵌套类?
- 27. 的Java:正确使用的close() - 上PrinterWriter
- 28. 如何正确使用Java方法?
- 29. 在java中正确使用actionListener
- 30. 使用setProperty正确写入Java Bean类
'&'的确是合乎逻辑的,并且看到http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.22.2 –
@SteveKuo谢谢为了指出这一点。我已经修复了我的答案;-) –