DEV Community

TANIAOKA, Akihiro
TANIAOKA, Akihiro

Posted on

13章59

この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);
    }
}
Enter fullscreen mode Exit fullscreen mode

オートボクシングとアンボクシング

  1. オートボクシング: 基本データ型から対応するラッパークラスへの自動変換。

    • 例: int から Integer
    • このコードの Integer val = Integer.valueOf(10); の部分では、オートボクシングが行われています。
  2. アンボクシング: ラッパークラスから基本データ型への自動変換。

    • 例: Integer から int
    • このコードの System.out.println(num == val); の部分では、valint 型にアンボクシングされています。

オートボクシングとアンボクシングが行われる場合

  • オートボクシングは、基本データ型の値がラッパークラスのオブジェクトに割り当てられるときに行われます。
  • アンボクシングは、ラッパークラスのオブジェクトが基本データ型の値として使用されるときに行われます。

変換が行われずにエラーとなる場合

  • ラッパークラスのオブジェクトが null の場合にアンボクシングを行うと、NullPointerException がスローされます。
    • 例: Integer val = null; int num = val; はエラーとなります。

このコードでは、numint 型、valInteger 型です。num == val の比較では、val がアンボクシングされて int 型に変換され、num と同じ値であるため、結果は true となります。

Top comments (0)