这条线在Java中意味着什么:boolean retry = id == 1;

我一直在学习Java一段时间,仍然在学习新的语法技巧和东西。 我在Android源代码中遇到了这个:

boolean retry = id == 1; 

这是什么意思?

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

id == 1是一个布尔expression式,如果id等于1 ,则为true,否则为false。

boolean retry = id == 1; 声明一个名为retry的布尔variables,并将布尔expression式id == 1的值赋给这个variables。

所以它声明一个布尔variables,如果id == 1 ,则返回true,否则返回false。

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

 boolean retry = (id == 1); 

这是一样的

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

== ,它是等于谓词,优先于= ,它是赋值运算符。

因此,首先计算id == 1 ,然后将其值(true或false)分配给retry

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

这是一样的:

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

首先用1来评估id ,所以推测id是一个integer

之后,值retry被赋予了这个评估,所以如果id等于1,那么retry将变为true ,并且对于任何其他的id retry值将变为false

这行创build一个布尔variables,如果id等于1,则将其设置为true如果不是,则为false

我发现只是使用parens有助于消除这种复杂的陈述背后的混乱。

boolean retry = (id == 1); 对我来说更有意义。 这里很明显, (id == 1)是一个正在计算的expression式,结果被分配给boolean retry

它是一种三元操作, (x) ? true : false (x) ? true : false在C,C ++,C#等中为(x) ? true : false ;

相似的语法:

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

或者可以用另一种方式写:

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

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

 boolean retry = (id == 1); 

所以基本上它检查id是否等于1,然后将结果赋给variablesretry。

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

id1retry的值将为true

retry指定一个expression式,它可以是真或假,因为retry是一个boolean 。 此外, ==将首先解决,然后它将被分配到retry

它基本上与retry = (id == 1) 。 它正在评估布尔expression式,并将其分配给retry

布尔variablesretry将得到值01取决于expression式id==1是否返回truefalse

如果id值是1 ,那么id==1将对应于true ,因此retry=1

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

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

 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 ){ } 

我将根据id为int的假设作为我的回应,因此与1的比较是正确的,并且编译错误不适用。 ==是JLS中第15.21.1节中描述的java中的相等运算符。 作为一个布尔运算符,==会输出一个布尔值。 =是java的赋值运算符,在这种情况下,它是具有以下语法的复合赋值运算符 :

布尔值f =(op1 op op2)

在翻译中=将(op1 op op2)操作的输出值赋给左操作数,在这种情况下为f

回想一下你的例子, id == 1的输出(如果id的值为1,则返回true,否则返回false), 重试

以简单的英语结束,您的示例具有以下含义: 只要id的值为1,就重试