ラッパークラスの利用
基本データ型である int や double の値をオブジェクトとして扱えるように用意されているのがラッパークラスです。基本データ型毎にそれぞれラッパークラスが用意されており、基本データ型にはない色々なメソッドを利用することができるようになります。ここでは Java でラッパークラスの利用方法について解説します。
(Last modified: )
ラッパークラスとは
Java では基本データ型が用意されており、数値や文字を格納したり演算子と組み合わせる場合であれば基本データ型を使えば十分です。ただ基本データ型にはクラスのようにメソッドは用意されていませんので、基本データ型に対して操作を行ったりすることはできません。
そこで基本データ型の値を持つことができ、色々なメソッドを用意したクラスが用意されています。それがラッパークラスと呼ばれるものです。基本データ型から対応するラッパークラスのオブジェクトを作成し、そのオブジェクトに対して用意されたメソッドを利用することで例えば数値から文字列への変換といった処理が可能になります。
基本データ型毎に対応するラッパークラスがそれぞれ用意されています。
基本データ型 | ラッパークラス |
---|---|
boolean | Boolean |
char | Character |
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
int 型のラッパークラスは Integer クラス、 float 型のラッパークラスは Float クラスです。基本的には基本データ型の先頭文字を大文字にしたものがラッパークラスの名前ですが、 char 型と int 型だけは異なりますので注意して下さい。
ラッパークラスのオブジェクトの作成
基本データ型の値に対して様々な操作を行うには、基本データ型の値を持つラッパークラスのオブジェクトを作成します。そして作成したオブジェクトに対してラッパークラスで用意された様々なメソッドを用いていきます。
例として int 型の値を持つ Integer クラスのインスタンスを作成します。インスタンスを作成には Integer クラスで用意されている valueOf メソッドを使用します。
public static Integer valueOf(int i)
パラメータ: i - int値 戻り値: iを表すIntegerインスタンス。
valueOf メソッドはクラスメソッドです。 1 番目の引数に int 型の値を指定すると、引数に指定した値を持つ Integer クラスのインスタンスを作成します。
Integer i = Integer.valueOf(16);
通常はこの valueOf メソッドを使用してインスタンスを作成する方法を使ってください。他のラッパークラスにも同じように valeOf メソッドが用意されています。
インスタンスを作成するには Integer クラスのコンストラクタを利用するこおもできますが、コンストラクタを使用する方法は現在非推奨となっています。
public Integer(int value)
パラメータ: value - Integerオブジェクトによって表される値。
コンストラクタと new 演算子を使い、 Integer クラスのインスタンスを作成します。
Integer i = new Integer(16);
先ほども書きましたがこちらの方法は非推奨となっており、コンパイル時に推奨されない方法として警告が表示されます。
ラッパークラスの値を取得する
ラッパークラスのインスタンスを作成すると、インスタンスには対応する基本データ型の値が保管されています。保管されている値を取得するには各クラスで定義されているメソッドを使います。例として Integer クラスのオブジェクトから値を取得するには Integer クラスで用意されている intValue メソッドを使います。
public int intValue()
戻り値: このオブジェクトが表す数値をint型に変換した値。
メソッドを実行すると、対象のインスタンスが保管している数値を int 型の値として返します。
次のサンプルをみてください。
Integer i = Integer.valueOf(16); int val = i.intValue();
intValue メソッドはインスタンスが持つ値を int 型の値として返します。また Integer クラスには値を long 型の値として返す longValue メソッドや double 型の値として返す doubleValue メソッドなども用意されています。他のラッパークラスも同じようなメソッドがそれぞれ用意されています。
このように基本データ型の値からラッパークラスのインスタンスを作成したあと、今度はラッパークラスのインスタンスが保管していある値を対応する基本データ型の値をとして取得することができます。
それでは簡単なサンプルプログラムを作って試してみます。テキストエディタで次のように記述したあと、 JSample13-1.java という名前で保存します。
class JSample13_1{ public static void main(String[] args){ Integer i = Integer.valueOf(10); int val = i.intValue(); System.out.println("i = " + val); } }
コンパイルを行います。
javac -encoding UTF-8 JSample13_1.java
その後で、次のように実行してください。
java JSample13_1
基本データ型の値を使ってラッパークラスのインスタンスを作成し、そのあとでインスタンスから基本データ型の値を取得して画面に表示しました。
オートボクシング機能の利用
ラッパークラスにはオートボクシングという機能が利用できます。これは本来ラッパークラスのインスタンスを記述すべきところにラッパークラスに対応した基本データ型の値を記述すると、自動で変換してくれるというものです。
次のサンプルを見てください。 Integer クラスのインスタンスを作成しています。
Integer i = Integer.valueOf(16);
これをオートボクシングの機能を使うと次のように記述することができます。
Integer i = 16;
本当ならば Integer クラスのインスタンスを作成する記述をするべきところに、対応する基本データ型の値を記述しています。オートボクシングを使用すれば、基本データ型の値を記述するだけで自動的に変換が行われます。
またラッパークラスのインスタンスから値を取得する場合もオートボクシングを利用できます。通常は次のように記述します。
Integer i = Integer.valueOf(16); int val = i.intValue();
これをオートボクシングの機能を使うと次のように記述することができます。
Integer i = Integer.valueOf(16); int val = i;
オートボクシングを使用することでラッパークラスのオブジェクトをあたかも基本データ型のように扱うことができます。
ラッパークラスの基本的な使い方について解説しました。それぞれのラッパークラスでどのようなメソッドが用意されているのかについては各ラッパークラスのページで解説します。
-- --
Java でラッパークラスの利用方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。