当前位置: 首页 > 面试题库 >

在“ if”语句中与==和=混淆

高博涉
2023-03-14
问题内容

我知道我们不能像其他几种语言中那样在Java的if语句中使用赋值运算符。

那是

            int a;

            if(a = 1) {  }

将给出编译错误。

但是以下代码可以正常工作,如何?

           boolean b;

           if(b = true) {   }

编辑:这是不能在if语句中使用赋值的例外规则。


问题答案:

因为赋值的“结果”是赋值的值,所以boolean在第二种情况下它仍然是表达式。if表达式要求条件是boolean表达式,第二个但不是第一个满足。实际上,您的两个片段是:

int a;

a = 1;
if (a) { }

boolean b;

b = true;
if (b) { }

通过该扩展是否可以编译第二个版本而不是第一个版本?

这是不直接比较true和false的原因之一。所以,我总是只写if (b)代替if (b == true)if (!b)代替的if (b == false)。你仍然可以得到与问题if (b == c),当bcboolean变量,诚然-
一个错字有可能会导致一个问题。我不能说这曾经发生在我身上。

编辑:只要您的整体条件表达式为,就可以在if语句和while循环等中使用对您的各种编辑分配的响应boolean。例如,您可能有:

String line;
while ((line = reader.readLine()) != null)
{
    // Do something with a line
}

尽管我 通常会
避免出现条件下的副作用,但是这种特殊用法通常对于上面显示的示例或使用有用InputStream.read。基本上是“虽然我读的值有用,但要使用它”。



 类似资料:
  • 着色器语言GLSL中关于if语句、for语句的使用,和javascript语言、C语言中的if语句、for语句执行逻辑规则基本一致,这里默认你已经有一定的编程基础,也就不做过多讲解,只是简单说明一下。 单独使用if if(x>100){ gl_FragColor = vec4(1.0,0.0,0.0,1.0);//红色 } if-else形式 bool colorBool; // 根据布尔值

  • 问题内容: 我有以下代码: 在哪里。 如果第一个陈述为真会怎样? Java还会检查第二条语句吗?因为为了使第一条语句为真,所以HashMap不应包含给定的键,因此如果选中了第二条语句,则将获得。 简单来说,如果我们有以下代码 Java将在第一种情况下检查b是否a为false,a在第二种情况下是否为true? 问题答案: 不会被评估。这非常有用。例如,如果你需要测试String是否为null或为空,

  •  if 语句,就是类似于「如果○○的话,做●●」,根据条件判断脚本的一部分是否执行的语法。  语法如下: if(expression) 语句或语句块 else 语句或语句块  第一个“语句或语句块”是当 expression 表达式的结果为真时执行的部分,第二个“语句或语句块”则是结果为假时执行的部分。如果不需要 else 以后的部分,可以省略。 例: if(a==b) inform("a和b相等

  • 问题内容: 这是我的代码: 我在 IF 条件语句中遇到错误。 我究竟做错了什么? 问题答案: 您可能想要而不是。

  • 问题内容: 我在这里面临着奇怪的事情。如果我缺少什么,请帮助我了解。我的if条件应该是: 但是我写错了: 而且我的Eclipse编译器不要求我对其进行更正。然后,我假设没有编译时间或检查异常。所以: 返回布尔值? 问题答案: 是的,分配给您的变量并返回。因此,即使它通常是一个错误,它也是一种有效的语法。 避免这种错别字比较安全。

  • 两者之间有实际区别吗 和 除了第一个更短之外,一个优先级更高,还是更慢? 编辑: 我意识到这可能并不清楚,但通常是。