new Integer(int)
の使用は、常に新しいブジェクトになることが保証されています。
これに対して、Integer.valueOf(int)
は、コンパイラ、クラスライブラリ、Java 仮想マシンで値がキャッシュされます。
キャッシュに格納された値を使うことはインスタンスの作成を回避し、コードはより高速になります。
-128から127までの値は、対応するキャッシュされたインスタンスを持つことが保証されています。
そして、valueOf
メソッドの使用は、コンストラクタを使用するより約3.5倍高速です。
定数範囲外の値は、両方のスタイルの性能は同じです。
クラスが J2SE 5.0より前の Java 仮想マシンとの互換性が不要なら、Long
、Integer
、Short
、Character
、Byte
のインスタンスを作成するときは、オートボクシングか valueOf
メソッドを使用してください。