簡體   English   中英

- - > - - Java中的運算符

[英]-​->-​- 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語句中時,它在堆棧上有32 第4行和第5行是從x--編譯的。 來自--y第8行和第11 --y x在遞增之前加載, y在之后加載。

順便說一句,奇怪的是javac沒有優化這個靜態表達式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM