【问题标题】:What does this line mean in Java: boolean retry = id == 1;这行在 Java 中是什么意思: boolean retry = id == 1;
【发布时间】:2013-02-04 12:01:02
【问题描述】:

我学习 Java 已经有一段时间了,并且还在学习新的语法技巧和东西。我在 Android 源代码中遇到过这个:

boolean retry = id == 1;

什么意思?

【问题讨论】:

  • 如果您需要评论以澄清问题,请这样做。 cmets 不适用于燃烧、延长玩笑或辨别袜子的颜色。
  • 哇,这有 80 多票赞成票和反对票。为什么人们投票反对它?很清楚,而且很切题,虽然这是一个初学者的问题,但 很难用谷歌搜索它。为了找到答案,您必须知道这是一个运算符优先级问题,而这很容易初学者可能还不理解。成为初学者不是犯罪。
  • @Gus 如果有帮助,这个问题有点争议——至少足以引发meta post。这应该可以解释对问题和答案的一些反对意见。
  • 我一直认为你必须像 boolean retry = (id == 1); 那样在它周围加上 () 我想这是为了可读性。

标签: java syntax


【解决方案1】:

id == 1 是一个布尔表达式,如果id 等于1,则为真,否则为假。

boolean retry = id == 1; 声明一个名为retry 的布尔变量,并将布尔表达式id == 1 的值赋给该变量。

所以它声明了一个布尔变量,如果id == 1 为真,否则为假。

为了更清楚一点,你可以这样写:

boolean retry = (id == 1);

【讨论】:

  • 我将其读作id == 1 ? true : false 的简写,其中truefalse 已成为多余
【解决方案2】:

如果id 的值为1,则retrytrue,否则retryfalse

【讨论】:

    【解决方案3】:

    和这个一样

    boolean retry;
    if (id == 1)
       retry = true;
    else
       retry = false;
    

    【讨论】:

      【解决方案4】:

      等于谓词==的优先级高于赋值运算符=

      因此,首先评估id == 1,然后将其值(真或假)分配给retry

      【讨论】:

        【解决方案5】:

        如果id == 1,则布尔重试的值为true。

        同理:

        boolean retry;
        if (id == 1) {
            retry = true;
        } else {
            retry = false;
        }
        

        【讨论】:

        • 调试信息在运行时被完全忽略(不存在!),因此不会产生影响。
        【解决方案6】:

        首先id 被评估为 1,所以推测id 是一个integer

        之后,retry 的值被分配给这个评估,所以如果id 等于 1,retry 将变为 true,对于任何其他值 idretry 将变为 @ 987654330@.

        【讨论】:

          【解决方案7】:

          此行创建一个布尔变量,如果id 等于1,则将其设置为true,否则将其设置为false

          【讨论】:

            【解决方案8】:

            我发现仅使用括号有助于消除此类复杂语句背后的混淆。

            boolean retry = (id == 1); 对我来说更有意义。这里很明显(id == 1) 是一个被评估的表达式,结果被分配给boolean retry

            【讨论】:

            • 这是一个Java程序员应该知道==优先于=的基本概念。
            • 并不复杂。我的意思是复杂的,例如由多个操作(评估,赋值)组成的语句。如果您愿意,可以复合?
            【解决方案9】:

            它就像一个三元运算,在 C、C++、C# 等中(x) ? true : false

            类似的语法:

            boolean retry = (id == 1)? true: false; 
            

            也可以换一种写法:

            boolean retry;
            if (id == 1) {
                retry = true;
            } else {
                retry = false;
            }
            

            【讨论】:

              【解决方案10】:

              如果你这样看,可能更容易看到发生了什么:

              boolean retry = (id == 1);
              

              所以基本上它检查 id 是否等于 1,然后将结果分配给变量 retry。

              【讨论】:

                【解决方案11】:

                这是一种定义布尔变量的方法。

                id1 时,retry 的值为true

                【讨论】:

                  【解决方案12】:

                  retry 分配一个表达式,该表达式为真或假,因为retryboolean。 进一步,==会先被求解,然后分配给retry

                  【讨论】:

                    【解决方案13】:

                    retry = (id == 1)基本相同。它正在评估布尔表达式,并将其分配给retry

                    【讨论】:

                      【解决方案14】:

                      布尔变量retry 将获得值01,具体取决于表达式id==1 是返回true 还是false

                      如果id 的值为1,则id==1 将对应true,因此retry=1

                      如果id的值为0,那么id==1将对应false,因此retry=0

                      请注意== 是一个比较运算符。

                      【讨论】:

                        【解决方案15】:
                        1.int id = 1;
                          boolean retry = id == 1;
                        

                        表示retry = true;

                        2.int id = 2;
                          boolean retry = id == 1;
                        

                        表示retry = false;

                        简化 id == 1 可以认为是

                        if ( id == 1 ){
                        }
                        

                        【讨论】:

                          【解决方案16】:

                          我的回答将基于 id 是一个 int 的假设,因此与 1 的比较是正确的,并且没有出现编译错误。 == 是 Java 中的相等运算符,如 JLS 的 15.21.1 部分所述。作为布尔运算符, == 将输出 boolean 值。 = 是 java 的赋值运算符,在这种特殊情况下,它是 compound assignment operator,具有以下语法:

                          布尔 f = (op1 op op2)

                          In translation = 将(op1 op op2) 运算的输出值分配给左操作数,在本例中为 f

                          回顾您的示例,id == 1 的输出(如果 id 的值为 1,则为 true,否则为 false)分配给 retry

                          简单地说,您的示例具有以下含义:只要 id 的值为 1,就重试

                          【讨论】:

                            【解决方案17】:

                            代码可以这样写,那么就很容易理解了,你觉得 所以?最后,感谢您给我机会回答问题!

                            boolean retry = (id == 1);
                            

                            【讨论】:

                            • 您的回答似乎含糊不清。不要把你的 cmets 和你的答案一起写出来。
                            猜你喜欢
                            • 1970-01-01
                            • 2019-04-24
                            • 1970-01-01
                            • 2010-12-28
                            • 2020-07-05
                            • 1970-01-01
                            • 1970-01-01
                            • 2012-12-26
                            • 1970-01-01
                            相关资源
                            最近更新 更多