4

Stringsが宣言されている場合、次の 5 行のコードは同じ結果を生成します。

int i = Integer.valueOf(s);
int y = Integer.parseInt(s);
int j = Integer.valueOf(s).intValue();
Integer x = Integer.valueOf(s);
Integer k = Integer.valueOf(s).intValue();

それぞれが優先されるコードになる状況はありますか? とは交換可能であり、必要でintはないようです。Integer.intValue()

4

3 に答える 3

7

が必要な場合はintを使用しparseInt()、必要な場合は をInteger使用してくださいvalueOf()。それらは現在 (一種の) 互換性がありますが、必要なデータ型を直接返すものを使用する方が理にかなっています。(歴史的に、それらはまったく交換可能ではありませんでした。これは、Java 5 の自動ボックス化とボックス化解除で導入されました。)

intValue()あなたが使用している方法は、クラス型をプリミティブに変換するだけなIntegerのでint、それを使用することvalueOf()は最悪の組み合わせであり、決して使用したくない. (悪いことは何も起こりません。読むのに時間がかかるだけで、パフォーマンスがわずかに悪く、一般的に余計なものです。)

気にしない、またはわからない場合は、 を使用しますparseInt()。特に初心者の場合、クラス型よりもプリミティブ型が必要になることがよくあります。

于 2013-01-23T13:37:15.987 に答える
3

intそしてInteger、自動ボクシングと自動アンボックスの魔法によって交換可能に見えるように作られています: 一方が必要で他方が存在する多くの場合、コンパイラーはそれらを変換するために必要なコードを自動的に挿入します。

これは便利ですが、それについて知っていれば、多くの場所でこれを避けることができ、その結果、コードがわずかに高速になります (実行する変換が少なくなるため)。

  • Integer.parseInt()を返すintので、必要な場合はそれを使用する必要がありますint
  • Integer.valueOf()を返すIntegerので、必要な場合はそれを使用する必要がありますInteger
  • Integer.valueOf().intValue() 最初に を作成しInteger次にそこから値を抽出しintます。単純な の代わりにこれを使用する正当な理由はありませんInteger.parseInt()

intとの間の決定Integerも簡単です。

  • 一般にint、可能であれば、プリミティブ型 ( ) を使用することをお勧めします。
  • が必要な場合Object(たとえば、番号を に入れたい場合)、ここではプリミティブ型を使用できないCollectionため、ラッパー型 ( ) を使用する必要があります。Integer
于 2013-01-23T13:38:25.050 に答える
0

int と Integer は互換性がありません。Java 5 以降の Autoboxing 機能により、int から Integer への変換は jvm 自体によって処理されます。しかし、不必要に Integer クラスを使用するべきではありません。プリミティブ データ型は常に高速です。 .

于 2013-01-23T13:39:14.550 に答える