基本データ型のラッパークラスや配列の操作について学習します。
カリキュラムのサンプル コードは、「Javaコードの実行」に示す手順で実行して確認できます。基本データ型のラッパークラス
「4.2 Java言語の基礎(字句、値、変数)」で学習したように、基本データ型の値に対して様々な操作を行うには、基本データ型の値を持つラッパークラスのオブジェクトを作成します。そして作成したオブジェクトに対してラッパークラスで用意された様々なメソッドを用いていきます。
例としてint型の値を持つIntegerクラスのオブジェクトを作成します。new演算子を使い次のように記述します。
int i = 84;
Integer oi = new Integer(i);
例としてIntegerクラスのオブジェクトから値を取得するには、Integerクラスで用意しているintValueメソッドを使います。
int i = 84;
Integer oi = new Integer(i);
int val = oi.intValue();
オートボクシングを使用すると、本来ラッパークラスのオブジェクトを記述すべきところに、ラッパークラスに対応した基本データ型の値を記述することで、自動でラッパークラスに変換することができます。
int i = 84;
Integer oi = i;
オートボクシングとは?
基本データ型からラッパークラスへの自動変換をオートボクシングといいます。次のようにint型で宣言されたnumIntをInteger型へ明示的に変換する必要がありません。
int numInt = 10;
Integer numInteger = numInt;
オートボクシングの機能を使わずに明示的に変換しようとすると次のようなJavaコードになります。
int numInt = 10;
Integer numInteger = new Integer(numInt);
次のように、値を取得する場合にもオートボクシングが利用できます。
int i = 84;
Integer oi = i;
int val = oi;
ラッパークラスによる文字列変換
ラッパークラスの基本的な使い方として数値と文字列に変換したり、文字列を数値に変換したりできます。
数値から文字列への変換
int型の値やfloat型の値を文字列(Stringクラスのオブジェクト)に変換する3種類の方法を示します。
- 「toString」メソッドの使用
- 「valueOf」メソッドを使用
- 「+」演算子の使用
「toString」メソッドを使用する方法では、基本データ型をラッパークラスのオブジェクトに変換した後で、各ラッパークラスで用意されている「toString」メソッドを使って、文字列に変換します。
int i = 84;
Integer oi = new Integer(i);
String str = oi.toString();
「valueOf」メソッドを使用する方法では、Stringクラスで用意されている「valueOf」メソッドを使って、文字列に変換します。
int i = 84;
String str = String.valueOf(i);
「+」演算子を使用する方法では、「+」演算子は文字列と数値が対象だった場合に、数値を文字列に変換してから連結します。
int i = 84;
String str = "num:" + i;
文字列から数値への変換
数値形式の文字列を数値そのものに変換する2種類の方法を示します。
- 「parsexxx」メソッド(=xxxは基本データ型の名称)の使用
- 「valueOf」メソッドの使用
parsexxxメソッドの使用する方法では、例えばIntegerクラスで用意されている「parseInt」メソッドは、引数に指定された文字列を整数の値として解析し、int型の戻り値として返します。
String str = "124";
int i = Integer.parseInt(str);
「valueOf」メソッドを使用する方法では、例えばIntegerクラスで用意されている「valueOf「メソッドは、引数に指定された文字列が表す整数の値を、Integerクラスのオブジェクトの戻り値として返します。
String str = "124";
Integer oi = Integer.valueOf(str);
配列
Javaでは「java.util.Arrays」に配列操作関連の多くのユーティリティメソッドがあるので、そのユーティリティメソッドを用いてに配列を操ります。次の3種類のメソッドについて学習します。
- 文字列への変換
- 配列の比較
- 配列のコピー
文字列への変換
配列もオブジェクトであるため「toString」メソッドが使用できますが、通常のObject型と同様に型情報と数値の出力になります。「Arrays.toString」メソッド を使うことで要素を綺麗に出力します。
import java.util.Arrays;
int[] scores = { 30, 80, 40 };
System.out.println( scores.toString()); // [I@15db9742
System.out.println(Arrays.toString(scores)); // [30, 80, 40]
配列の比較
配列もオブジェクトであるため「equals」が使用できますが、要素の中身を比較して判定はしないため、「Arrays.equals」メソッドを使用します。「Arrays.equals」メソッドが「true」になるには、次の2つの条件を満たす必要があります。
- 要素数が同じ
- 対応する対の要素がすべて同等
import java.util.Arrays;
int[] firstArray = { 30, 80, 40 };
int[] secondArray = { 30, 80, 40 };
System.out.println(firstArray.equals(secondArray)); // false
System.out.println(Arrays.equals(firstArray, secondArray)); //true
配列のコピー
配列をコピーするときにすべての要素ではなく、指定した範囲の要素だけをコピーして新しい配列を作成できます。ここでは 「Arrays.copyOfRange」メソッドを使って、配列の指定した範囲の要素から新しい配列を作成する方法について説明します。
「Arrays.copyOfRange」メソッドは、最初のパラメータでコピーする対象の配列を指定し、次のパラメータで開始インデックス(この位置にある値は含まれる)、その次のパラメータで終了インデックス(この位置にある値は含まれない)を設定します。戻り値として、コピーされた新しい配列が戻されます。Javaコードを次に示します。
import java.util.Arrays;
int[] src = {12, 24, 18, 35, 21};
int[] dst = Arrays.copyOfRange(src, 1, 4);
System.out.println(Arrays.toString(src)); // [12, 24, 18, 35, 21]
System.out.println(Arrays.toString(dst)); // [24, 18, 35]
このJavaコードの場合、次のように処理されます。
本節の説明は以上になります。