工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Javaオートボクシングとアンボクシング完全ガイド:実例とベストプラクティス

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

Javaがプリミティブ型とラッパーオブジェクト間で自動変換する仕組みと、そのプロセスを示す実例を探求します。

Javaオートボクシング – プリミティブからラッパーオブジェクトへ

プリミティブ値をラッパークラスの変数に代入すると、Javaコンパイラはオートボクシングを実行し、対応するラッパーオブジェクトを作成します。例:

int a = 56; // オートボクシング
Integer aObj = a;

オートボクシングは、オブジェクトのみ受け入れるジェネリックコレクションを扱う際に特に便利です。コードを簡潔かつタイプセーフに保ちます。


例1:ArrayListでのオートボクシング

import java.util.ArrayList;

class Main {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        // オートボクシング: プリミティブ5と6がIntegerオブジェクトになる
        list.add(5);
        list.add(6);
        System.out.println("ArrayList: " + list);
    }
}

出力

ArrayList: [5, 6]

このスニペットでは、ArrayListがIntegerオブジェクトを保持。コンパイラがプリミティブリテラル5と6を自動的にボクシングします。


Javaアンボクシング – ラッパーからプリミティブへ

逆に、アンボクシングはラッパーオブジェクトをプリミティブ形式に戻します。例:

// オートボクシング
Integer aObj = 56;
// アンボクシング
int a = aObj;

アンボクシングはコレクションとシームレスに連携し、必要に応じて値をプリミティブとして取得できます。


例2:ArrayListからのアンボクシング

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);
        // アンボクシング: インデックス0のIntegerがintになる
        int a = list.get(0);
        System.out.println("インデックス0の値: " + a);
    }
}

出力

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

ここではlist.get(0)がIntegerを返し、コンパイラがaへの代入のために自動的にintにアンボクシングします。

オートボクシングとアンボクシングを理解すると、コレクションやオブジェクトを期待するAPIとやり取りする際によりクリーンで効率的なJavaコードが書けるようになります。

Java

  1. Java変数とリテラル:包括的ガイド
  2. Java入出力をマスター:表示、読み取り、データフォーマット
  3. Javaの式、文、ブロックを理解する
  4. Javaクラスとオブジェクト:実践ガイド
  5. Java抽象クラスとメソッド:包括的ガイド
  6. Javaネストクラスとインナークラス完全ガイド:種類、例、ベストプラクティス
  7. Java throw vs throws:実践例でマスターする例外ハンドリング
  8. Java文字列置換マスター:replace()、replaceAll()、replaceFirst()徹底解説
  9. Java String toLowerCase() & toUpperCase():ロケール対応テキストケース変換
  10. Javaオブジェクトとクラス:コアOOP概念を完全理解
  11. Java日付時刻完全ガイド:Date/Calendar/SimpleDateFormat/printf