if ( 25 <= si & < 30 )
Run Code Online (Sandbox Code Playgroud)
没有工作,我无法找到正确使用&的谷歌信息的方法.
出现的错误消息表明它希望>在哪里.
正确的语法是
if ( 25 <= si & si < 30 )
Run Code Online (Sandbox Code Playgroud)
请注意,这不是使用按位&操作!!
在此上下文中,&运算符的LHS和RHS 是布尔值,因此Java将使用非短路逻辑AND运算.
你也可以这样写:
if ( 25 <= si && si < 30 )
Run Code Online (Sandbox Code Playgroud)
...即使用短路逻辑AND运算符.
你应该使用哪种形式?
从语义的角度来看,&并且&&都会给出正确的答案,因为LH和RH子表达式是无副作用的.
从性能的角度来看,我希望JIT编译器将这两个版本优化为相同(或等效执行)的本机代码.但是,如果优化器不这样做,那么在完整应用程序的上下文中考虑时,两个版本之间的性能差异很可能是微不足道的.
从可读性的角度来看,&&表单可能更好......但只是因为许多Java程序员会误读&表单,因为他们不明白& 在Java中不一定是按位的!
| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |