Java での自動ボックス化/アンボックス化
JDK 5.0 で導入された自動ボックス化とアンボックス化により、プリミティブ型とそれに対応するラッパー間のシームレスな変換が可能になります。クラス。単純そうに見えますが、これらの変換がどのように行われるかは複雑です。
オート ボクシング
オート ボクシングでは、コンストラクターを使用するのではなく、ラッパークラス。このメソッドはプリミティブ値をパラメータとして受け取り、対応するラッパー オブジェクトを返します。例:
int intValue = 0; Integer intObject = Integer.valueOf(intValue); // Calls Integer.valueOf(0)
valueOf() を使用するとキャッシュが可能になり、ボックス化操作ごとに新しいオブジェクトが作成されるのを防ぎます。
自動ボックス化解除
対照的に、アンボックス化では、ラッパー クラスの intValue() (または対応するメソッド) を使用して、オブジェクトからプリミティブ値を抽出します。このメソッドは、ラッパー オブジェクト内に格納されているプリミティブ値を返します。次に例を示します。
Integer intObject = new Integer(0); int intValue = intObject.intValue(); // Calls intObject.intValue()
具体的な例
この例は、Integer コンストラクターは int パラメーターのみを受け入れるため、int-to-Integer ボックス化のみが許可されることを示しています。他のプリミティブ型の場合は、valueOf() を使用する必要があります。
同様に、ラッパー オブジェクトをバイトまたはショートにボックス化解除すると、エラーが発生します。これは、intValue() が int 値を byte や short ではなく int に直接変換するためです。
結論
自動ボックス化とボックス化解除には valueOf( ) と、それぞれプリミティブ型とラッパー クラスの間で変換するための対応するメソッド。このメカニズムにより、コードの可読性が向上し、操作が簡素化され、効率的で洗練されたコードが促進されます。
以上がJava では自動ボックス化とボックス化解除はどのように機能しますか?また、その実装にはどのようなニュアンスがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。