6

重複の可能性:
Integer と int を同じ意味で使用できるのはなぜですか?

私はこれらの違いを理解しようとしています。たとえば、何かを int として宣言してから、これを Integer に入れた数値と比較できますか? また、なぜJavaには2つあるのですか。これらを組み合わせてみませんか?

それぞれがどのように使用されているかを示す 3 ~ 4 行のコード例を示して、誰かが私を助けてくれますか?

4

6 に答える 6

5

intプリミティブはオブジェクトではありません。配列はプリミティブを許可します:

int[] array = new int[10];

しかし、ジェネリックはそうではありません:

List<int>  //won't compile

これが、最近ラッパー クラスを使用する主な理由です。また、期待されるInteger場所で使用できます。オプション性を実装したい場合は、Object最終的に値Integerを持つことができます。null

その矛盾に対処する言語がいくつかあることに注意してください。では値型があり、 Int クラスではクラスから拡張されAnyVal、通常のオブジェクトは拡張されますAnyRef(これらは両方とも から拡張されAnyます)。

于 2012-06-16T16:31:15.063 に答える
2

Java での型のボックス化を参照してください。Java 9以降、それらをまったく同じにするという話があります。

于 2012-06-16T16:32:23.630 に答える
2
  • Primitiveint型とIntegerクラスは別の型です。intプリミティブをIntegerオブジェクトと直接比較することはできません。intValueオブジェクトから取得する必要がありIntegerます。
  • はい、これは必須の機能です。Java やその他のいくつかの言語には、オブジェクトが必要な状況を処理するために、プリミティブ型用のこれらの種類のオブジェクト ラッパーがあります。たとえば、コレクション クラスにはオブジェクトが必要intであり、それらにプリミティブを使用することはできません。Integerしたがって、ラッパーが必要になります。
于 2012-06-16T16:33:44.347 に答える
2

整数はオブジェクトですが、int はプリミティブ型です。基本的に、オブジェクトは参照によって渡されますが、プリミティブは値によって渡されます。また、割り当て元も異なります。

Java で言えば、オブジェクトには機能があります。次のような呼び出し:

Integer.toString()

大丈夫ですが:

int.toString()

ではありません。

于 2012-06-16T16:34:09.650 に答える
1

int はプリミティブ、Integer はクラスです。あなたは言うことはできませんArrayList<int>が、あなたは言うことができますArrayList<Integer>

于 2012-06-16T16:31:43.880 に答える
1

Java のすべてのプリミティブ型には、対応するクラス (オブジェクトから派生したクラス) があります。たとえば、Boolean、Long などです。これは「ボクシング」と呼ばれます。説明は、たとえばこちらを参照してください。

于 2012-06-16T16:32:51.197 に答える