English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 基础教程

Java プロセス制御

Java 配列

Java 面向オブジェクト(I)

Java 面向オブジェクト(II)

Java 面向オブジェクト(III)

Java 異常処理

Java リスト(List)

Java Queue(キュー)

Java Mapコレクション

Java Setコレクション

Java 入出力(I/O)

Java Reader/Writer

Java その他のトピック

Java オートボックスとアンボックス

このチュートリアルでは、サンプルを用いてJavaの自動装箱とアンラップリングを学びます。

Java自動装箱-包装クラスの原始型

において自動装箱中、Javaコンパイラは自動的に原始型を対応する包装クラスオブジェクトに変換します。例えば、

int a = 56;
// オートボックス
Integer aObj = a;

Javaコレクションを使用する際には、オートボックス大きな利点があります。

例1:Java自動装箱

import java.util.ArrayList;
class Main {
   public static void main(String[] args) {
      ArrayList<Integer> list = new ArrayList<>();
      //オートボックス
      list.add(5);
      list.add(6);
      System.out.println("ArrayList: " +" + list);
   }
}

出力結果

ArrayList: [5, 6]

上記の例では、Integer型の配列リストを作成しました。したがって、配列リストはInteger型のオブジェクトのみを含むことができます。

この行に注意してください、

list.add(5);

ここでは、原始型の値を渡しますが、オートボックス、原始値は自動的にIntegerオブジェクトに変換され、配列リストに保存されます。

Javaアンラップリング-包装クラスオブジェクトは原始型です

においてアンラップリング中、Javaコンパイラは自動的に包装クラスオブジェクトを対応する原始型に変換します。例えば、

// オートボックス
Integer aObj = 56;
// アンボックス
int a = aObj;

のような自動ボックス同様に、アンボックスJavaコレクションとともに使用することもできます。

例2:Javaアンボックス

import java.util.ArrayList;
class Main {
   public static void main(String[] args) {
      ArrayList<Integer> list = new ArrayList<>();
      //オートボックス
      list.add(5);
      list.add(6);
      System.out.println("ArrayList: " +" + list);
      // アンボックス
      int a = list.get(0);
      System.out.println("インデックス0の値: " +" + a);
   }
}

出力結果

ArrayList: [5, 6]
インデックス0の値: 5

上記の例では、以下の行に注意してください:

int a = list.get(0);

ここでは、get()メソッドはインデックス0の場所のオブジェクトを返しますが、アンボックス、オブジェクトは自動的に基本型intに変換され変数aに割り当てられます。