我知道我们不能像其他几种语言中那样在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
),当b
和c
是boolean
变量,诚然-
一个错字有可能会导致一个问题。我不能说这曾经发生在我身上。
编辑:只要您的整体条件表达式为,就可以在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编译器不要求我对其进行更正。然后,我假设没有编译时间或检查异常。所以: 返回布尔值? 问题答案: 是的,分配给您的变量并返回。因此,即使它通常是一个错误,它也是一种有效的语法。 避免这种错别字比较安全。
两者之间有实际区别吗 和 除了第一个更短之外,一个优先级更高,还是更慢? 编辑: 我意识到这可能并不清楚,但通常是。