这条线在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,就重试 。