【发布时间】:2014-11-26 23:08:30
【问题描述】:
我最近遇到了这种语法
int i;
String s = "test";
if(!((i=s.length()) == 0)) {
System.out.println(i);
}
如果您想知道它打印的是什么:
4
现在我知道这段代码可以正确编译和运行。我也明白这会将 s.length 的值放入 i 中。我想知道这怎么可能? 我们如何在 if 子句中等同/分配变量。是否有人对编译器如何工作有任何见解
【问题讨论】:
-
在 C、Java 和许多其他语言中,
a = 5;等赋值被视为“表达式”,因此具有值。您偶尔会看到,例如,a = b = c = 5;将一堆变量初始化为相同的值。 -
而在某些环境下你会看到类似
while (GOOD_RETURN_CODE == returnCode = someFunction(someParms)) { ...的东西,所以someFunction的returnCode可以保存并在一次操作中检查。对于while语句,这避免了一些尴尬的代码。
标签: java if-statement assign