★★Java質問・相談スレッド167★★
■ このスレッドは過去ログ倉庫に格納されています
0585デフォルトの名無しさん
2014/03/01(土) 21:12:32.48new Integer(125)などで明示的にインスタンスを生成するとキャッシュは利用されない
Integer.valueOf(125)などコンストラクタを使用せずにインスタンスを取得するとキャッシュが利用される
オートボクシングを使ったコードがキャッシュを利用しているかどうかはコンパイラに依存する
JDKとEclipseのコンパイラではキャッシュを利用していることが逆コンパイルにより確認されている
上記の数値範囲に限ってキャッシュを使うことが言語仕様上に規定されている訳ではないので、キャッシュを前提としたコーディングは避けるべきである
つまり-128〜127の間の比較であってもオブジェクト比較は避けるべきである
equals()もしくはintValue()で比較すべきである
キャッシュの目的はFlyweightパターンにある通り、時間的コストとメモリを省力化するためのものである
■ このスレッドは過去ログ倉庫に格納されています