Java学習ロードパッケージングクラス
前書き
Javaのデータ型intおよびdoubleはオブジェクトではなく、Objectによって提供されるメソッドはアップキャストでは取得できません。このような特性のため、基本的なデータ型は、変換、汎用、反映、およびその他のプロセスに参加できません。この欠点を補うために、Javaはパッケージングクラスを提供しています。
Javaの8つの基本データ型には、対応するパッケージングクラスがあります。
基本データ型 | 包装 |
---|---|
バイト | バイト |
ショート | ショート |
int | 整数 |
長いです | 長いです |
浮く | 浮く |
ダブル | ダブル |
char | キャラクター |
ブール値 | ブール値 |
1.基本的なデータ型とパッケージの違い
- 定義は異なります。パッケージングクラスはオブジェクトに属しますが、基本データ型は属しません。
- 宣言メソッドと使用方法は異なります。ラッパークラスは新しい初期化を使用し、一部のコレクションクラスの定義はArrayListなどの基本的なデータ型を使用できません。
- 初期値が異なります。パッケージングクラスのデフォルト値はnullであり、基本的なデータ型は異なります(詳細については上記の表を参照してください)。
- 保管方法と場所が異なると、パフォーマンスも異なります。基本的なデータ型はスタックに格納され、パッケージングクラスは参照とインスタンスに分割されます。参照はスタックにあり、特定のインスタンスはヒープにあります。
2、開封/開梱
開梱/梱包は、実際には基本タイプとパッケージタイプの相互変換です。
-
基本型から対応するパッケージングクラスへの変換はボクシングと呼ばれます。たとえば、intをIntegerクラスのオブジェクトにパッケージ化します。
Integer i = Integer.valueOf(1); //手动装箱 Integer j = 1; //自动装箱
-
パッケージングクラスの対応する基本タイプへの変換は、ボックス化解除と呼ばれます。たとえば、Integerクラスのオブジェクトはintに再簡略化されます。
Integer i0 = new Integer(1); int i1 = i0; //自动拆箱 int i2 = i0.intValue(); //手动拆箱
3つの基本的なデータ型、パッケージングクラス、および文字列変換
-
文字列への基本的なデータ型とパッケージングクラス:
// 1. 连接运算 String str1 = 1 + ""; String str2 = new Integer(1) + ""; // 2. 调用 String.valueOf()方法 String str3 = String.valueOf(1); String str4 = String.valueOf(new Integer(1));
-
基本的なデータ型とパッケージングクラスへの文字列:
// 采用包装类的 parseXxx() 方法,返回值为基本类型 int num1 = Integer.parseInt("123"); // 如果字符串形式不对,运行时会发生 NumberFormatException 错误 // 如:int num1 = Integer.parseInt("12a3");
第四に、自動ボクシングによるメモリの再利用
自動ボクシングの場合、整数の場合var =?、オブジェクトが整数オブジェクトインスタンスIntegerCache.cache()
生成メソッドによって生成された-128〜127の範囲の変数割り当てを指している場合、既存のオブジェクトを再利用します。Stringを使用した共有プール操作は同じです。cache()メソッドは、-128〜127の範囲で生成されたIntegerオブジェクトをプールします。次に使用されるときは、プールから取得され、作成されません。
Integer a1 = 1;
Integer a2 = 1;
System.out.println(a1 == a2); // true
Integer b1 = 222;
Integer b2 = 222;
System.out.println(b1 == b2); // false
したがって、この数値範囲内のIntegerオブジェクトのスタックポインタ(属性名)は、値が同じであるため、同じ領域を指しているため、==で直接判断できます。ただし、この間隔外のすべてのデータは自動ボックス化によってヒープ上でインスタンス化され、既存のオブジェクトは再利用されなくなります。整数の判断には、equalsメソッドを使用することをお勧めします。