66

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

boolean retry = id == 1;

这是什么意思?

4

17 回答 17

220

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

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

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

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

boolean retry = (id == 1);
于 2013-02-04T12:03:42.747 回答
151

retryis trueifid的值为 1,否则retryfalse

于 2013-02-04T12:01:35.290 回答
69

它与

boolean retry;
if (id == 1)
   retry = true;
else
   retry = false;
于 2013-02-04T12:02:32.667 回答
44

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

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

于 2013-02-04T15:32:38.280 回答
14

布尔重试获取 true if 的值id == 1

它与以下内容相同:

boolean retry;
if (id == 1) {
    retry = true;
} else {
    retry = false;
}
于 2013-02-04T12:03:23.897 回答
6

首先 theid用 1 评估,所以大概id是 a integer

之后,该值retry被赋予此评估,因此如果id等于 1,retry将变为true,并且对于任何其他值id retry将变为false

于 2013-02-04T12:03:39.043 回答
3

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

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

于 2013-02-04T17:35:52.790 回答
3

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

于 2013-02-04T12:34:35.733 回答
3

(x) ? true : false在 C、C++、C# 等中,它的作用类似于三元运算;

类似的语法:

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

或者它可以写成另一种方式:

boolean retry;
if (id == 1) {
    retry = true;
} else {
    retry = false;
}
于 2013-02-04T14:45:28.177 回答
2

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

boolean retry = (id == 1);

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

于 2013-02-04T19:37:07.100 回答
2

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

id是时1, 的值retry将是true

于 2013-02-04T14:16:37.823 回答
2

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

于 2013-02-04T22:17:06.350 回答
2

retry分配一个表达式,它是真或假,就像retrya一样boolean。此外,==将首先解决,然后将其分配给retry

于 2013-02-04T15:53:12.777 回答
1

布尔变量retry将获得值01取决于表达式是否id==1返回truefalse

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

如果 的值为id0id==1将对应于false,因此retry=0

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

于 2015-05-27T07:32:04.307 回答
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 ){
}
于 2013-03-28T13:17:43.700 回答
0

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

布尔 f = (op1 op op2)

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

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

简而言之,您的示例具有以下含义:只要 id 具有值 1 就重试

于 2013-02-04T14:30:06.747 回答
0

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

boolean retry = (id == 1);
于 2018-03-17T06:10:16.623 回答