[英]-->-- operator in Java
我想知道, -->--
运算符在Java中做了什么?
例如,如果我有以下代码:
int x = 3;
int y = 3;
if (x -->-- y) {
return true;
}
这总是返回true。
谢谢!
在Java中, -->--
实际上不是运算符。
你写的实际上是if ((x--) > (--y))
。
而且,正如我们从这个答案中得知的那样, - y是预定义,而x--是后递减,因此,这基本上是if (3 > 2)
,它总是返回true
。
Positcrement和preicrement是非常相似的运营商。 Java的字节码可以更好地理解。 它们每个都包含两个操作。 加载变量并递增它。 唯一的区别在于此操作的顺序。 如果您的案例中的陈述是以这种方式编译的:
4: iload_1 //load x
5: iinc 1, -1 //decrement x
8: iinc 2, -1 //decrement y
11: iload_2 //load y
12: if_icmple 23 //check two values on the stack, if true go to 23rd instruction
当JVM出现在if语句中时,它在堆栈上有3
和2
。 第4行和第5行是从x--
编译的。 来自--y
第8行和第11 --y
。 x
在递增之前加载, y
在之后加载。
顺便说一句,奇怪的是javac没有优化这个静态表达式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.