【Java入門(4)API活用・例外処理 #2】ラッパークラス

 

みのる
こんにちは。笑顔で感謝!✨ みのるコーチです。
今回も、ご覧いただき、ありがとうございます。

今回は…

Java入門4 API活用・例外処理 #2
ラッパークラス

というテーマでお送りします。

彩香
ポップな響きですね。
どんなクラスか楽しみです。
剛留
今回も、よろしくお願いします。

【1】 ラッパークラス

ラッパークラスとは…

基本データ型の値を

包む(ラップする)クラス

で…

整数などのデータを
参照型(オブジェクト)として扱いたい

場合に使用します。

この、ラッパークラスを活用すれば…

基本データ型では使えない
フィールドやメソッドも 使用できます。

ラッパークラス
✅ 基本データ型の値を包む(ラップする)クラス。

✅ 整数などのデータを参照型(オブジェクト)
  として扱いたい場合に使用する。

✅ フィールド・メソッドも使用できる。

Javaでは

基本データ型

が用意されています。
int型、char型、boolean型などです。

変数の宣言をして格納したり、演算に使用する
場合には、この基本データ型で充分です。

ただし、プログラミングをしていると
値の他に…

メソッドもあるオブジェクトとして
扱いたい場合

も出てきます。

参照型として、扱いたい場合ですね。

この時に使用するのがラッパークラスです。

基本データ型は8種類ありましたね。
これに対応して、ラッパークラスも8種類あります。

基本データ型の先頭を大文字にした識別子が
ラッパークラス名となっています。

ただし…

int型に対する Integerクラス。
char型に対する Characterクラス。

…については
違う名前になっていますので
このあたりは押さえておきましょう。

そして、この中で 一番よく使われるのが

Integerクラス

です。

int 型の値を持っていて
その他 フィールドやメソッドも用意されています。

今回は、このIntegerクラスを中心に
見ていきましょう。

【2】 ラッパーオブジェクト作成

ラッパーオブジェクトを作成して
値を設定する場合の方法を見ていきましょう。

① コンストラクタを使う(非推奨)

Integer iObj1 = new Integer(10);

オブジェクトを作るので、このように コンストラクタに
値を渡してインスタンス化する事が考えられます。

例えば Integerクラスの場合には…

引数に int型 を渡すコンストラクタと
String型を渡すコンストラクタが用意されています。

ただし…

バージョン 9 以降では
この方法は非推奨

となっているんです。

このコースで使っている、バージョン11 の
JavaAPIドキュメントを見ると非推奨と記されています。

また、現在(2023年1月)最新バージョンのJava19 の
JavaAPIドキュメントを見ると…

こんな風に、記載されています。

「削除される可能性があります」

と…。

という事で、新たにラッパークラスを作る場合には
コンストラクタを使った記述は、しないようにしましょう。

② valueOf() メソッドを使う

Integer iObj1 = Integer.valueOf(10);

Integer クラスの staticメソッド である valueOf() に
int型の値を渡して、Integer型のオブジェクトを取得します。

内部的には、領域の再利用により効率化が図られていますが
あまり深く考えなくても大丈夫です。

メソッドが用意されているので 活用しましょう。

③ オートボクシング変換

Integer iObj1 = 10;

これは、自動的に int型の値を Integerオブジェクトに
変換してくれる Javaの機能です。

オートボクシング変換

といいます。

直感的でシンプルですね。使いやすいと思います。

彩香
ラッパークラスもクラスなので、new 演算子で コンストラクターを
呼び出す事を 考えてしまいますが、非推奨なんですね。

ノートしておきます。

剛留
ボクシング変換がスッキリしそうですね。

自分でプログラミングする時には
この方法で 行こうと思います。

【3】 基本型への変換

次に、ラッパーオブジェクトを 基本データ型に
変換する方法を 見ていきましょう。

① intValue() メソッドを使う

Integer iObj1 = 10;

int i1 = iObj1.intValue();

intValue() メソッドで、値を取得する方法です。

これは、Integer の例ですが…

各ラッパークラスに
同様に、変換メソッドが用意されています。

ですので、これらのメソッドを
活用していきましょう。

② アンボクシング変換

Integer iObj1 = 10;

int i1 = iObj1;

これは、自動的に Integerオブジェクトを
int型の値に変換してくれる Javaの機能です。

アンボクシング変換

シンプルに記述できるようになっていますね。

ボクシング変換と、アンボクシング変換
セットで押さえておきましょう。

【4】 フィールド・メソッド

ここでは、利用できる Integerクラスの
フィールドやメソッドを見ておきましょう。

int i1 = Integer.parseInt(“30”);
int i2 = Integer.max(40, 50);
int i3 = Integer.MAX_VALUE;

超入門でも出てきた
文字列から int型に変換するメソッド

parseInt()

です。

これは、Integerクラスの staticメソッドとして
定義されているものだったんです。

次が、2つの値の
大きい方を返してくれる メソッド

max()

です。
これも、簡単に使えそうですね。

また、Integerクラスで定義されている定数に

MAX_VALUE

があります。

int型で扱える 最大値 が格納されています。

そして、この他にもメソッドやフィールドは ありますので
JavaAPIドキュメントで見ておくと 良いですね。

彩香
ラッパークラス、サクッと理解しました。
剛留
オートボクシング、アンボクシング変換は
シンプルに書けて便利ですね。

【まとめ】

【1】 ラッパークラス
✅ 基本データ型の値を包む
  (ラップする)クラス。

✅ 整数などのデータを参照型
  (オブジェクト)として
  扱いたい場合に使用する。

【2】 ラッパーオブジェクト作成
✅ valueOf() メソッドを使う。

✅ オートボクシング変換。

【3】 基本型への変換
✅ intValue() メソッドを使う。
  (Integerクラスの場合)

✅ アンボクシング変換。

【4】 フィールド・メソッド
✅ 便利に使える フィールドや
  メソッドが準備されている。