Sta*_*wed 2 java if-statement assign
我最近遇到了这种语法
int i;
String s = "test";
if(!((i=s.length()) == 0)) {
System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)
如果你想知道它打印什么打印:
4
Run Code Online (Sandbox Code Playgroud)
现在我知道这个代码编译以及正确运行.我也明白这会将s.length的值放入i中.我想知道这怎么可能?我们如何在if子句中等同/赋值变量.是否有人有任何见解,不知道如何使用编译器
赋值表达式
i=s.length()
Run Code Online (Sandbox Code Playgroud)
解析为分配的值.
在运行时,赋值表达式的结果是赋值发生后变量的值.赋值表达式的结果本身不是变量.
我现在不想去获取字节码,但基本上
s值被推入堆栈String#length()i