[英]-->-- 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.