あるフォーラムのスレッドで、多くの人や経験豊富なJava開発者でさえ、次のJavaコードの平和を理解できないだろうと仮定した人がいます。
Integer i1 = 127;
Integer i2 = 127;
System.out.println(i1++ == i2++);
System.out.println(i1 == i2);
Javaに興味のある人として考えてみたところ、次のような結果になりました。
System.out.println(i1++ == i2++);
// True, since we first check for equality and increment both variables afterwards.
System.out.println(i1 == i2);
// True again, since both variables are already incremented and have the value 128
Eclipseはそうではないと教えてくれます。最初の行はtrueで、2番目の行はfalseです。
本当に説明をいただければ幸いです。
2番目の質問。これはJava固有ですか、それともこの例はたとえばCベースの言語にも当てはまりますか?