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)を呼び出すのが良いです。
他にも

などがあります。いずれもImmutableなクラスですので、キャッシュ済みなインスタンスを使いまわしても安全(なハズ)です。

*1:プロパティ"java.lang.Integer.IntegerCache.high"。デフォルトは127