「TRUE」と「FALSE」の 2 つの出力の違いを理解するのを手伝ってください。また、このロジックと演算子に関連するトピックを Oracle Docs で取得する方法を教えてください。
int i = 1;
int j = 2;
System.out.println(i==j--);// FALSE
j = 2;
System.out.println(i==j-1);//TRUE
j = 2;
System.out.println(i==--j);//TRUE
i == j--
意味i == j; j = j - 1;
i == j-1
意味i == (j-1);
i == --j
意味j = j - 1; i == j;
以下は演算子の優先順位表です。たとえば、-
は よりも優先順位が高く、これが意味する==
理由です。i==j-1
i==(j-1)
各行の先頭にあるi
is1
とj
isの説明と同様に、次の表に同等のものを示します。2
i==j--; i==j; j--; // 1==2 is false, j <- 1
i==j-1; i==j-1; // 1==(2-1) is true, j does not change
i==--j; --j; i==j; // j <- 1, 1==1 is true
違いは次のとおりです。
j-- 呼び出しの後に発生します (したがって、比較中に i==j を評価するのは j の現在の値です。 -- は (接尾辞) の後に発生します)
j-1 は式の一部であるため、計算の一部として発生します
--j は前の関数呼び出しであるため、前に減算されます (接頭辞)