有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中正确使用&

if ( 25 <= si & < 30 )

它不起作用,我也找不到一种方法来搜索有关正确使用&;的信息

出现的错误消息表示它期望>;去哪里&;是


共 (3) 个答案

  1. # 1 楼答案

    与所有Java布尔运算符一样,您需要使用符号两次

    ie&&代表和

    || is for or
    

    因此,您的解决方案应该是

    (25 <= si && si < 30)
    

    这意味着大于或等于25,小于30(si=25 | | | 26 | | 27 | | 28 | | 29)

  2. # 2 楼答案

    请注意<<=>>=是二进制运算符,两边都需要一个整数值。编译器正在抱怨,因为if条件中的&<之间没有任何内容

    此外,您还应该了解&&&运算符之间的区别。(我已经纠正了我所认为的区别。有关详细信息,请参见Java规范中的15.22.2. Boolean Logical Operators &, ^, and |15.23. Conditional-And Operator &&。)

    所有这些加在一起,正确的代码是

    if (25 <= si && si < 30) 
    

    最后,对于将来的问题,如果您复制并复制准确的错误消息,我们将非常有助于回答您的问题。通常,释义会丢失很多我们需要帮助您的细节

  3. # 3 楼答案

    正确的语法应该是

    if ( 25 <= si & si < 30 )
    

    请注意,这是而不是使用按位&操作

    在这个上下文中,&操作符的LHS和RHS是布尔的,因此Java将使用非短路逻辑and操作

    你也可以这样写:

    if ( 25 <= si && si < 30 )
    

    。。。i、 e.使用短路逻辑AND运算符

    你应该使用哪种形式

    • 从语义的角度来看,&&&都会给出正确的答案,因为LH和RH子表达式没有副作用

    • 从性能角度来看,我希望JIT编译器将这两个版本优化为相同(或同等执行)的本机代码。但是,如果优化器不这样做,那么在整个应用程序的上下文中,两个版本之间的性能差异很可能可以忽略不计

    • 从可读性的角度来看,&&形式可能更好。。。但这仅仅是因为许多Java程序员会误读&表单,因为他们不理解Java中的&不一定是按位的