这条线在Java中意味着什么:boolean retry = id == 1;
我一直在学习Java一段时间,仍然在学习新的语法技巧和东西。 我在Android源代码中遇到了这个:
boolean retry = id == 1;
这是什么意思?
如果id
的值为1,则retry
为false
,否则retry
为false
。
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的方法。
当id
为1
, retry
的值将为true
。
retry
指定一个expression式,它可以是真或假,因为retry
是一个boolean
。 此外, ==
将首先解决,然后它将被分配到retry
。
它基本上与retry = (id == 1)
。 它正在评估布尔expression式,并将其分配给retry
。
布尔variablesretry
将得到值0
或1
取决于expression式id==1
是否返回true
或false
。
如果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,就重试 。