1. ラッパーの種類の一覧
Java には 8 つのプリミティブ型 (クラスではない型) があることはご存知でしょう。一方で、これは良いことです。シンプルで場所もほとんどとりません。一方で、授業だけが必要な場合もあります。その理由については、次のレッスンで詳しく説明します。
それで何ができるでしょうか?
Java の 5 番目のバージョンから、各プリミティブ型にツイン クラスが追加されました。このような各クラスは、特定の型の値を持つ単一のフィールドを格納します。これらのクラスは、クラス内のプリミティブ値をラップするため、ラッパー型と呼ばれます。
これらのタイプのリストを次に示します。何でも知ってますか?
| プリミティブ型 | ラッパークラス |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
プリミティブ型の名前は小文字で始まりますが、ラッパー クラスの名前は大文字で始まります。一部のクラス名は少し長いものもあります: Integerinstead of intи Characterinstead of char。
ラッパー クラスのすべてのオブジェクトは変更不可能 ( immutable ) です。
クラスの簡略化されたコードはInteger次のようになります。
| コード | ノート |
|---|---|
|
変数 コンストラクター メソッドは値を返します 静的メソッドは変数 Integerの新しいオブジェクトを作成しますint |
2. をintに変換するInteger
ラッパー型は、プリミティブの兄弟に対応するものとみなされます。プリミティブ型に対応するラッパー オブジェクトを簡単に作成できます。
int 型を例として使用して、プリミティブ型が対応するラッパー型とどのように相互作用するかを分析してみましょう。intからへInteger、またはその逆に変換するコードは次のようになります。
intを に変換するにはInteger、次のコードを記述する必要があります。
Integer name = new Integer(value);
ここでname、 は変数の名前Integer、 はvalueラップされたint値です。
例:
| コード | ノート |
|---|---|
|
|
|
|
|
an をIntegeran に変換するにはint、次のコードを記述する必要があります。
int name = variable.intValue();
ここでname、 は変数の名前int、 はオブジェクトvariableへの参照ですInteger。
例:
| コード | ノート |
|---|---|
|
|
|
|
|
|
|
|
3. オートボックス化とアンボックス化
しかし、Integer型を使った単純な操作ですら書くのは簡単ではありません。
前に述べたように、Integer型は変更不可能 ( immutable ) です。Integer新しい値を持つオブジェクトを作成するにはint、新しいオブジェクトを明示的に作成する必要がありますInteger。intとはいえ、オブジェクト内に格納されているの値を取得するのは簡単ですInteger。メソッドを呼び出すだけですintValue()。
例:
| コード | 説明 |
|---|---|
|
オブジェクト5でラップするオブジェクト から値を取得する 新しいオブジェクトを作成する (10 に等しい)IntegerIntegerInteger |
これはかなり面倒なコードだと思いませんか?
Java の作成者はそう考え、これらの操作を自動的に実行する方法をコンパイラーに教えました。intanから an への自動変換はオートボックス化(値をボックスに自動的に入れる)Integerと呼ばれ、その逆の操作 (anから への変換) はアンボックス化と呼ばれます。Integerint
| あなたのコード | コンパイラが認識するもの |
|---|---|
|
|
|
|
|
|
オートボックス化とボックス化解除のおかげで、 を変数intに安全に代入したりInteger、その逆を行うことができます。intと の型を区別することなく、あらゆる複雑な式を作成できますInteger。
例:
| コード | コンパイラが生成するもの |
|---|---|
|
|
|
|
4. ラッパー変数の比較
自動ボックス化とボックス化解除は、シンプルで透過的なプロセスです。必要に応じてステートメントを使用しnew Integer()、intValue()必要に応じてメソッドを呼び出します。
プログラマにとっては、すべてがうまく簡単に機能します。と を比較する場合、比較は値ではなく参照に基づいて行われることに注意してください。IntegerInteger
| コード | コンソール出力 |
|---|---|
|
|
|
|
および変数aには値はb格納されませんint。オブジェクトへの参照を保存します。つまり、それらを正しく比較する方法を覚えておくことが重要です。
| 間違い | 右 |
|---|---|
|
|
GO TO FULL VERSION