このJavaコードの例では、オートボクシングとアンボクシングが行われています。具体的には、基本データ型 int を対応するラッパークラス Integer に変換する場合(オートボクシング)、およびその逆(アンボクシング)の処理が含まれています。コードの内容を見てみましょう:
public class Sample {
public static void main(String[] args) {
int num = 10;
Integer val = Integer.valueOf(10);
System.out.println(num == val);
}
}
オートボクシングとアンボクシング
-
オートボクシング: 基本データ型から対応するラッパークラスへの自動変換。
- 例:
intからIntegerへ - このコードの
Integer val = Integer.valueOf(10);の部分では、オートボクシングが行われています。
- 例:
-
アンボクシング: ラッパークラスから基本データ型への自動変換。
- 例:
Integerからintへ - このコードの
System.out.println(num == val);の部分では、valがint型にアンボクシングされています。
- 例:
オートボクシングとアンボクシングが行われる場合
- オートボクシングは、基本データ型の値がラッパークラスのオブジェクトに割り当てられるときに行われます。
- アンボクシングは、ラッパークラスのオブジェクトが基本データ型の値として使用されるときに行われます。
変換が行われずにエラーとなる場合
- ラッパークラスのオブジェクトが
nullの場合にアンボクシングを行うと、NullPointerExceptionがスローされます。- 例:
Integer val = null; int num = val;はエラーとなります。
- 例:
このコードでは、num は int 型、val は Integer 型です。num == val の比較では、val がアンボクシングされて int 型に変換され、num と同じ値であるため、結果は true となります。
Top comments (0)