よく見かけるネタ IntegerCache 問題

Java

昔からよくある Java パズルでブログの更新を久しぶりにしておきます。

次のコードの結果はどうなるでしょう?

true
false
true
false

となります。

間違えてませんよね!

今さらですが、これらは Integer.valueOf() メソッドが使われて -128 から 127 までは IntegerCache クラスであらかじめ用意されているものが使われる。

小さな親切、大きなお世話というやつです!

でも、用意してある物は使わなくては損ですよね。

じゃあ、どうしてもっといっぱい作って用意しておいてくれないの?って言うあなたに

JVM の実行時引数による制御も可能です。

-Djava.lang.Integer.IntegerCache.high=<size>

それとも、

-XX:AutoBoxCacheMax=<size>

で OK です。

-Djava.lang.Integer.IntegerCache.high=128 と設定して実行すると先ほどのプログラムの結果は

true
true
true
false

となります。

ちなみに IntegerCache の最小値の設定方法は私は知りません。(;゜ロ゜)

以上、よくあるネタ終了です。

Hatena タグ:

 

 

 

 

 

 

このエントリーをはてなブックマークに追加
Share on Facebook

« »

Leave a Reply

* が付いている項目は、必須項目です!

*

次の HTML タグと属性を利用できます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Trackback URL