私はこれらの違いを理解しようとしています。たとえば、何かを int として宣言してから、これを Integer に入れた数値と比較できますか? また、なぜJavaには2つあるのですか。これらを組み合わせてみませんか?
それぞれがどのように使用されているかを示す 3 ~ 4 行のコード例を示して、誰かが私を助けてくれますか?
私はこれらの違いを理解しようとしています。たとえば、何かを int として宣言してから、これを Integer に入れた数値と比較できますか? また、なぜJavaには2つあるのですか。これらを組み合わせてみませんか?
それぞれがどのように使用されているかを示す 3 ~ 4 行のコード例を示して、誰かが私を助けてくれますか?
intプリミティブはオブジェクトではありません。配列はプリミティブを許可します:
int[] array = new int[10];
しかし、ジェネリックはそうではありません:
List<int> //won't compile
これが、最近ラッパー クラスを使用する主な理由です。また、期待されるInteger場所で使用できます。オプション性を実装したい場合は、Object最終的に値Integerを持つことができます。null
その矛盾に対処する言語がいくつかあることに注意してください。c#では値型があり、scala Int クラスではクラスから拡張されAnyVal、通常のオブジェクトは拡張されますAnyRef(これらは両方とも から拡張されAnyます)。
Java での型のボックス化を参照してください。Java 9以降、それらをまったく同じにするという話があります。
int型とIntegerクラスは別の型です。intプリミティブをIntegerオブジェクトと直接比較することはできません。intValueオブジェクトから取得する必要がありIntegerます。intであり、それらにプリミティブを使用することはできません。Integerしたがって、ラッパーが必要になります。整数はオブジェクトですが、int はプリミティブ型です。基本的に、オブジェクトは参照によって渡されますが、プリミティブは値によって渡されます。また、割り当て元も異なります。
Java で言えば、オブジェクトには機能があります。次のような呼び出し:
Integer.toString()
大丈夫ですが:
int.toString()
ではありません。
int はプリミティブ、Integer はクラスです。あなたは言うことはできませんArrayList<int>が、あなたは言うことができますArrayList<Integer>。
Java のすべてのプリミティブ型には、対応するクラス (オブジェクトから派生したクラス) があります。たとえば、Boolean、Long などです。これは「ボクシング」と呼ばれます。説明は、たとえばこちらを参照してください。