なぜ Java にはこれらのInteger、Character型、およびクラスがあるのにint、 Ccharなどにも適応しているのInteger[] i = {......}
ですint[] i = {....};
か?
4 に答える
Integerはオブジェクトintですが、プリミティブです。intを関数に渡すときはいつでも、そのまま渡します。
Integerint をラップします。その場合、それは不変であるため、参照を介して編集することはできませんが、ジェネリックに入れることができます。これは null に設定できますが、またはなどの null 条件として解釈される特別な値をint超える可能性はありません。0-1Integer.MAX_VALUE
たとえば、int をラップして使用する必要がArrayList<int>ある while は完全に無効です。ArrayList<Integer>
ただし、 autoboxingを使用intすると、手動でラップせずに ArrayList にすぐに追加できget()ます。また、エントリのときにプリミティブが必要な場合は、透過的に自動的にアンラップします。
最後に、限られた数の個別の変数または固定配列を使用して計算を行う場合は、通常、 を使用する必要がありますint。セット、リスト、またはマップを扱うときは、コレクションを int として宣言し、FooCollection<Integer>オートadd(ボクシングを直接許可する必要があります。
Integer、CharacterおよびこのようなものはObjectswhileintでcharあり、このようなものはプリミティブです。
最大の違いは、プリミティブ値はできないのに対し、Objectはできるということです。null
プリミティブ値はメモリ使用量が少ないため、できる限りプリミティブ値を使用することをお勧めします。
一般的に言える唯一の違いは、Wrapper が の客観的な表現であることprimitiveです。
ラッパー クラスは、 が必要な場合にプリミティブ値を表すために使用されますObject。
ジャバでは、
Integerはラッパー クラスです。つまり、objectwhileintはプリミティブです。Integerデフォルト値はnullint の場合は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 オブジェクトに変換されます。そのため、メソッドは出力します。int0System.out.println(testClass.number)IntegernulltestClass.numIntegerintInteger0
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メソッドの意義とは/