在java中正确使用& 1 周,4 日 Questions & Answers 142 if ( 25 <= si & < 30 ) 它不起作用,我也找不到一种方法来搜索有关正确使用&;的信息 出现的错误消息表示它期望>;去哪里&;是
# 1 楼答案 与所有Java布尔运算符一样,您需要使用符号两次 ie&&代表和 || is for or 因此,您的解决方案应该是 (25 <= si && si < 30) 这意味着大于或等于25,小于30(si=25 | | | 26 | | 27 | | 28 | | 29)
# 2 楼答案 请注意<、<=、>和>=是二进制运算符,两边都需要一个整数值。编译器正在抱怨,因为if条件中的&和<之间没有任何内容 此外,您还应该了解&和&&运算符之间的区别。(我已经纠正了我所认为的区别。有关详细信息,请参见Java规范中的15.22.2. Boolean Logical Operators &, ^, and |和15.23. Conditional-And Operator &&。) 所有这些加在一起,正确的代码是 if (25 <= si && si < 30) 最后,对于将来的问题,如果您复制并复制准确的错误消息,我们将非常有助于回答您的问题。通常,释义会丢失很多我们需要帮助您的细节
# 3 楼答案 正确的语法应该是 if ( 25 <= si & si < 30 ) 请注意,这是而不是使用按位&操作强> 在这个上下文中,&操作符的LHS和RHS是布尔的,因此Java将使用非短路逻辑and操作 你也可以这样写: if ( 25 <= si && si < 30 ) 。。。i、 e.使用短路逻辑AND运算符 你应该使用哪种形式 从语义的角度来看,&和&&都会给出正确的答案,因为LH和RH子表达式没有副作用 从性能角度来看,我希望JIT编译器将这两个版本优化为相同(或同等执行)的本机代码。但是,如果优化器不这样做,那么在整个应用程序的上下文中,两个版本之间的性能差异很可能可以忽略不计 从可读性的角度来看,&&形式可能更好。。。但这仅仅是因为许多Java程序员会误读&表单,因为他们不理解Java中的&不一定是按位的
# 1 楼答案
与所有Java布尔运算符一样,您需要使用符号两次
ie
&&
代表和因此,您的解决方案应该是
这意味着大于或等于25,小于30(si=25 | | | 26 | | 27 | | 28 | | 29)
# 2 楼答案
请注意
<
、<=
、>
和>=
是二进制运算符,两边都需要一个整数值。编译器正在抱怨,因为if条件中的&
和<
之间没有任何内容此外,您还应该了解
&
和&&
运算符之间的区别。(我已经纠正了我所认为的区别。有关详细信息,请参见Java规范中的15.22.2. Boolean Logical Operators &, ^, and |和15.23. Conditional-And Operator &&。)所有这些加在一起,正确的代码是
最后,对于将来的问题,如果您复制并复制准确的错误消息,我们将非常有助于回答您的问题。通常,释义会丢失很多我们需要帮助您的细节
# 3 楼答案
正确的语法应该是
请注意,这是而不是使用按位
&
操作强>在这个上下文中,
&
操作符的LHS和RHS是布尔的,因此Java将使用非短路逻辑and操作你也可以这样写:
。。。i、 e.使用短路逻辑AND运算符
你应该使用哪种形式
从语义的角度来看,
&
和&&
都会给出正确的答案,因为LH和RH子表达式没有副作用从性能角度来看,我希望JIT编译器将这两个版本优化为相同(或同等执行)的本机代码。但是,如果优化器不这样做,那么在整个应用程序的上下文中,两个版本之间的性能差异很可能可以忽略不计
从可读性的角度来看,
&&
形式可能更好。。。但这仅仅是因为许多Java程序员会误读&
表单,因为他们不理解Java中的&
不一定是按位的