社内se × プログラマ × ビッグデータ

プログラミングなどITに興味があります。

Java challenge Integer

問題:何が出力されるのか?

Integer number1 = 5;
Integer number2 = 5;

Integer number3 = 128;
Integer number4 = 128;

// True or False ?
System.out.println(number1 == number2);
System.out.println(number3 == number4);

考え
False, False が出力されるのかなと思いましたが、、、

True, False が出力されました。。

なぜ?
どうも、-128 から 127 は JREがキャッシュするらしく、同じ値が参照されるらしい。
パフォーマンス向上のため?

コード
Java/IntegerChallenge.java at master · blueskyarea/Java · GitHub