Java で new Integer(int)
Java SE 1.5 より前は
Integer i = new Integer(5);
の様にnew演算子を使わざるを得ないのですが、
Java SE 1.5とそれ以降では
Integer i = Integer.valueOf(5);
の様にvalueOfが使えます。
new演算子とvalueOf、何が違うかと言うと、
です。
valueOfの実装は
public static Integer valueOf(int i) { if(i >= -128 && i <= IntegerCache.high) return IntegerCache.cache[i + 128]; else return new Integer(i); }
の様になっていて、-128から上限値*1を事前にキャッシュしています。
使う側は値域の判定をせずに、Integer.valueOf(int)を呼び出すのが良いです。
他にも
- java.lang.Long#valueOf(long)
- java.lang.Boolean#valueOf(boolean)
- java.math.BigDecimal#valueOf(long)
などがあります。いずれもImmutableなクラスですので、キャッシュ済みなインスタンスを使いまわしても安全(なハズ)です。