抱歉,提出了奇怪的问题。如果有人有一个如何使它变得更好的想法,我会很高兴。至少可以想象我们有3个布尔变量:
boolean a = false;
boolean b = false;
boolean c = false;
Java允许编写以下内容:
System.out.println(a=b);
System.out.println(a==b & a==c);
从这两个陈述中,我希望以下内容也是合法的。
System.out.println(a=b & a=c);
我的问题是:为什么在第二种情况下不允许,而在第一种情况下允许呢?在第二种情况下,两个作业都以boolean解析,并且&对我来说合法。
这是因为=
优先级比更低&
(顺便说一句,它是您的代码片段中的布尔运算符,而不是按位运算符;它与&&
不短路一样,它是相同的)。
因此,您的表达式为(带有括号):
a = (b & a) = c
但是您不能分配c
给b & a
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句