なぜ Java にはこれらのInteger
、Character
型、およびクラスがあるのにint
、 Cchar
などにも適応しているのInteger[] i = {......}
ですint[] i = {....};
か?
4 に答える
Integer
はオブジェクトint
ですが、プリミティブです。int
を関数に渡すときはいつでも、そのまま渡します。
Integer
int をラップします。その場合、それは不変であるため、参照を介して編集することはできませんが、ジェネリックに入れることができます。これは null に設定できますが、またはなどの null 条件として解釈される特別な値をint
超える可能性はありません。0
-1
Integer.MAX_VALUE
たとえば、int をラップして使用する必要がArrayList<int>
ある while は完全に無効です。ArrayList<Integer>
ただし、 autoboxingを使用int
すると、手動でラップせずに ArrayList にすぐに追加できget()
ます。また、エントリのときにプリミティブが必要な場合は、透過的に自動的にアンラップします。
最後に、限られた数の個別の変数または固定配列を使用して計算を行う場合は、通常、 を使用する必要がありますint
。セット、リスト、またはマップを扱うときは、コレクションを int として宣言し、FooCollection<Integer>
オートadd(
ボクシングを直接許可する必要があります。
Integer
、Character
およびこのようなものはObjects
whileint
でchar
あり、このようなものはプリミティブです。
最大の違いは、プリミティブ値はできないのに対し、Object
はできるということです。null
プリミティブ値はメモリ使用量が少ないため、できる限りプリミティブ値を使用することをお勧めします。
一般的に言える唯一の違いは、Wrapper が の客観的な表現であることprimitive
です。
ラッパー クラスは、 が必要な場合にプリミティブ値を表すために使用されますObject
。
ジャバでは、
Integer
はラッパー クラスです。つまり、object
whileint
はプリミティブです。Integer
デフォルト値はnull
int の場合は0
- これら 2 つのタイプには、オートボクシングとオート アンボクシングの概念があります。
- 整数は に変換でき
int
、その逆も可能です。
次のプログラムはこれを示しています
public class TestClass {
int num;
Integer number;
public static void main(String[] args) {
TestClass testClass = new TestClass();
System.out.println(testClass.num);
System.out.println(testClass.number);
testClass.autoBoxInt(testClass.num);
}
public void autoBoxInt(Integer number){
System.out.println(number);
}
}
出力は
0
null
0
このステートメントは、デフォルト値 ieをSystem.out.println(testCkass,num)
出力します。デフォルト値を出力します。メソッドにパラメーターを渡すと、は自動的に and オブジェクトに変換されます。そのため、メソッドは出力します。int
0
System.out.println(testClass.number)
Integer
null
testClass.num
Integer
int
Integer
0
Java コレクション フレームワークは、オートボクシングを使用してプリミティブを Wrapper クラスに変換します。これは、プリミティブ値を取ることができないためです。これらは、ハッシュとハッシュコードを使用して、オブジェクトをすばやく取得してコレクションに格納するのに役立ちます。次の例はこれを示しています
Set<Integer> numbers = new HashSet<Integer>();
numbers.add(new Integer(10));
numbers.add(new Integer(4));
numbers.add(6);
numbers.add(-9);
numbers.add(new Integer(65));
System.out.println(numbers);
これにより、セットが出力されます
[4, 65, 6, -9, 10]
ハッシュとは何か、ハッシュコードがどのように使用されるかを知るには、次のリンクを 参照してくださいhttp://www.thejavageek.com/2013/06/27/what-are-hashcodes/ http://www.thejavageek.com/2013/ 06/26/Javaでのequalsメソッドの意義とは/