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