ラッパークラスの主要な利点は,それらが文字列を基本データ型に変換するメソッドを提供していることです.つまり,データは普段文字列として扱い,必要に応じて変えることができるということです.そこで,まずJavaの文字列の処理について学びます.
Stringクラス
Stringクラスを用いると,可変長の文字列を操作できますので,ユーザは格納される文字列の長さに注意する必要はありません.
Stringクラスの主なコンストラクタには以下のものがあります.
| String() | 空の文字列を作成する |
| String(byte[] buffer) | byte配列から文字列を作成する |
| String(String str) | 文字列strの内容で新しい文字列を作成 |
| int indexOf(String str) | 文字列strが最初に現われる位置を返す |
| int lastIndexOf(String str) | 文字列strが最後に現われる位置を返す |
| String replace(char oldChar, char new Char) | 文字列内の文字oldCharをnewCharで置き換え |
| String substring(int beginIndex) | 位置beginIndex以降の文字を返す |
| String toLowerCase() | 文字列を小文字に変換する |
| String toUpperCase() | 文字列を大文字に変換する |

class StringReplace
{
public static void main(String[] args)
{
String str = "Minneapolis";
str = str.replace('i','k');
System.out.println(str);
}
}
実行結果
StringBufferクラス
StringBufferクラスは文字列自身を変更する必要のある処理に用いられます.
Stringクラスの主なコンストラクタには以下のものがあります.
| StringBuffer() | 16文字の初期容量を持つ空の文字列バッファを作成する |
| StringBuffer(int len) | lenで示す文字数の初期容量を持つ空の文字列バッファを作成する |
| StringBuffer(String str) | 文字列strから文字列バッファを作成 |
Stringクラスの主なインスタンスメソッドには以下のものがあります.
| StringBuffer append(String str) | 文字列strを追加する |
| StringBuffer delete(int start, int end) | 位置startからend-1までの文字列を削除 |
| StringBuffer insert(int offser, String str) | 位置offsetに文字列strを挿入 |
| StringBuffer length() | 文字列バッファの長さを返す |
| StringBuffer substring(int start) | 位置startから末尾までの文字列を返す |
| String toString() | 文字列バッファのデータを現す文字列を返す |
char配列,byte配列,StringBufferとのデータ交換 Stringオブジェクトと,char[]型,byte[]型,あるいはStringbuffer型との相互データ交換を行うことができます.このとき基本データ型の配列は固定長なので,その長さに注意が必要です.
char[],byte[]からStringへのデータ交換
char[] ch = 'a','b';
byte[] bt = 'A','B';
String s1 = new String(ch);//char[] からStringへ
String s2 = new String(bt);//byte[] からStringへ
StringとStringBufferのデータ交換
StringBuffer sb = new StringBuffer();
String s = sb.toString();//StringBufferからStringへ
sb = new StringBuffer(s);//StringからStringBufferへ
Integer系ラッパークラス
IntegerはJavaのクラスライブラリの中でも特によく用いられるクラスの1つです.
Integerクラスには,MAX_VALUEとMIN_VALUEの2つのクラス変数が定義されています.
Integerクラスの主なクラスメソッドには以下のものがあります.
| static Integer decode(String s) | sを基数10の値として変換してIntegerオブジェクトを返す |
| static int parseInt(String s) | sを基数10の値として変換してint型を返す |
| static int parseInt(String s, int r) | sを基数rの値として変換してint型を返す |
Integerクラスの主なインスタンスメソッドには以下のものがあります.
| byte byteValue() | 現在のオブジェクトの値をbyte型で返す |
| double doubleValue() | 現在のオブジェクトの値をdouble型で返す |
| boolean equals(Object obj) | objと現在のオブジェクトが同じ値なら真を返す |
| int intValue() | 現在のオブジェクトの値をint型で返す |
| long longValue() | 現在のオブジェクトの値をlong型で返す |
| short shortValue() | 現在のオブジェクトの値をshort型で返す |
| String toString() | 現在のオブジェクトの値の文字列表現を返す |

class HexInteger
{
public static void main(String[] args)
{
String str = "45";
System.out.println(Integer.parseInt(str,16) + "は16進数で" + str);
}
}
実行結果
Double系ラッパークラス
浮動小数点を扱うものに,FloatラッパークラスとDoubleラッパークラスがあります.この2つは内容がよく似ているので,ここではDoubleラッパークラスについて学びます.
Doubleクラスには,MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,TYPEの6つのクラス変数が定義されています.
Doubleクラスの主なクラスメソッドには以下のものがあります.
| boolean isInfinite(double d) | dの値が無限なら真を返す |
| boolean isNaN(double d) | dの値が非数値なら真を返す |
| String toString(double d) | dの値の文字列表現を返す |
| Double ValueOf(String s) | sの表すfloat値をカプセル化したDoubleオブジェクトを返す |
Doubleクラスの主なインスタンスメソッドには以下のものがあります.
| byte byteValue() | 現在のオブジェクトの値をbyte型で返す |
| double doubleValue() | 現在のオブジェクトの値をdouble型で返す |
| float floatValue() | 現在のオブジェクトの値をfloat型で返す |
| int intValue() | 現在のオブジェクトの値をint型で返す |
| boolena isInfinite() | 値がNEGATIVE_INFINITYまたはPOSITIVE_INFINITYなら真 |
| short shortValue() | 現在のオブジェクトの値をshort型で返す |
| String toString() | 現在のオブジェクトの値の文字列表現を返す |

class IsInfinity
{
public static void main(String[] args)
{
double divident = 3;
double divisor = 0;
double q = divident/divisor;
System.out.println(q);
// 無限とNaNのテスト
System.out.println("無限大ですか"+ Double.isInfinite(q));
System.out.println("不能ですか"+ Double.isNaN(q));
}
}
実行結果
Character型ラッパークラス
Characteクラスはchar型の値をカプセル化するものです.
Characterクラスの主なクラスメソッドには以下のものがあります.
| boolean isDigit(char c) | cが数字なら真をそうでなければ偽を返す |
| boolean isLetter(char c) | cが文字なら真をそうでなければ偽を返す |
| boolean isLetterOrDigit(char c) | cが文字または数字なら真をそうでなければ偽を返す |
| boolean isLowerCase(char c) | cが小文字なら真をそうでなければ偽を返す |
| boolean isSpaceChar(char c) | cがスペース文字なら真をそうでなければ偽を返す |
| boolean isWhiteSpace(char c) | cがホワイトスペースなら真をそうでなければ偽を返す |
| char toLowerCase(char c) | cを小文字に変換して返す |
Characterクラスの主なインスタンスメソッドには以下のものがあります.
| char charValue() | 現在のオブジェクトの値をchar型で返す |
| boolean equals(Object obj) | objと現在のオブジェクトが同じ値なら真を返す |
| int digit() | 現在のオブジェクトの値をint型で返す |
Byte型ラッパークラス
Byteクラスはbyte型の値をカプセル化するものです.
Byteクラスの主なクラスメソッドには以下のものがあります.
| Byte decode(String s) | sの表す値をカプセル化したByteオブジェクトを返す |
| byte parseByte(String s) | sを基数10の値として変換してbyte型を返す |
| byte parseByte(String s, int r) | sを基数rの値として変換してbyte型を返す |
Byteクラスの主なインスタンスメソッドには以下のものがあります.
| byte byteValue() | 現在のオブジェクトの値をbyte型で返す |
| double doubleValue() | 現在のオブジェクトの値をdouble型で返す |
| float floatValue() | 現在のオブジェクトの値をfloat型で返す |
| int intValue() | 現在のオブジェクトの値をint型で返す |
| long longValue() | 現在のオブジェクトの値をlong型で返す |
| short shortValue() | 現在のオブジェクトの値をshort型で返す |
| String toString() | 現在のオブジェクトの値の文字列表現を返す |
Short型ラッパークラス
Shortクラスはshort型の値をカプセル化するものです.
Shortクラスの主なクラスメソッドには以下のものがあります.
| Short decode(String s) | sの表す値をカプセル化したShortオブジェクトを返す |
| short parseShort(String s) | sを基数10の値として変換してshort型を返す |
| short parseShort(String s, int r) | sを基数rの値として変換してshort型を返す |
Byteクラスの主なインスタンスメソッドには以下のものがあります.
| byte byteValue() | 現在のオブジェクトの値をbyte型で返す |
| double doubleValue() | 現在のオブジェクトの値をdouble型で返す |
| float floatValue() | 現在のオブジェクトの値をfloat型で返す |
| int intValue() | 現在のオブジェクトの値をint型で返す |
| long longValue() | 現在のオブジェクトの値をlong型で返す |
| short shortValue() | 現在のオブジェクトの値をshort型で返す |
| String toString() | 現在のオブジェクトの値の文字列表現を返す |
Long型ラッパークラス
Longクラスはlong型の値をカプセル化するものです.
Longクラスの主なクラスメソッドには以下のものがあります.
| long parseLong(String s) | sを基数10の値として変換してlong型を返す |
| long parseLong(String s, int r) | sを基数rの値として変換してlong型を返す |
| String toBinaryString(long l) | lの値の2進数表現を返す |
| String toHexString(long l) | lの値の16進数表現を返す |
| String toOctalString(long l) | lの値の8進数表現を返す |
| String toString(long l) | lの値の文字列表現を返す |
Longクラスの主なインスタンスメソッドには以下のものがあります.
| byte byteValue() | 現在のオブジェクトの値をbyte型で返す |
| double doubleValue() | 現在のオブジェクトの値をdouble型で返す |
| float floatValue() | 現在のオブジェクトの値をfloat型で返す |
| int intValue() | 現在のオブジェクトの値をint型で返す |
| long longValue() | 現在のオブジェクトの値をlong型で返す |
| short shortValue() | 現在のオブジェクトの値をshort型で返す |
| String toString() | 現在のオブジェクトの値の文字列表現を返す |
Systemクラス
Systemクラスには,ランタイム環境に関するいくつかの属性が定義されています.1つは,すでに使用しているoutというクラス変数です.この変数にはPrintStreamオブジェクトへの参照が入っていて,そのオブジェクトのprint()とprintln()メソッドで標準出力に文字列引数を表示することになります.クラス変数errにもPrintStreamオブジェクトへの参照が入っています.これは標準エラーストリームです.クラス変数inにはInputStreamオブジェクトへの参照が入っています.PrintStreamとInputStreamは入出力をサポートするクラスです.
Systemくらすのもう1つのクラスメソッドにexit()があります.これは現在のプログラムを終了します.
Systemクラスの主なクラスメソッドには以下のものがあります.
| long currentTimeMillis() | 現在の時刻を返す |
| void exit(int status) | statusを終了コードとしてJVMを終了 |
| void gc() | ガベージコレクタを実行 |
| void load(String filename) | filenameで指定したダイナミックライブラリを読み込む |
| String toOctalString(long l) | lの値の8進数表現を返す |
| String toString(long l) | lの値の文字列表現を返す |
Mathクラス
Mathクラスは数学関係のメソッドを集約させたものです.すべてstaticメソッドなので,「Math.sin()」のように簡単に使用できます.Mathクラスには円周率や自然対数の底eといった定数も定義されています. Systemくらすのもう1つのクラスメソッドにexit()があります.これは現在のプログラムを終了します.
Systemクラスの主なクラスメソッドには以下のものがあります.doubleの場合だけをのせていますが,float,int,longでも使える多重定義となっています.
| double abs(double a) | double値の絶対値を返す |
| double acos(double a) | アークコサイン値を返す |
| double asin(double a) | アークサイン値を返す |
| double atan(double a) | アークタンジェント値を返す |
| double ciel(double a) | 引数の小数点以下を切り上げた値を返す |
| double floor(double a) | 引数の小数点以下を切り捨てた値を返す |
| double cos(double a) | コサイン値を返す |
| double sin(double a) | サイン値を返す |
| double tan(double a) | タンジェント値を返す |
| double min(double a, double b) | 小さい方の値を返す |
| double max(double a, double b) | 大きい方の値を返す |
| double pow(double a, double b) | aをb乗した値を返す |
| double exp(double a) | の値を返す |
| double log(double a) | の値を返す |
次に,Java.utilパッケージに含まれる,乱数,日付,ベクトル,ハッシュ表,スタックなどについて学びます.
Randomクラス
Randomクラスは,double型,float型,int型,またはlong型の乱数を生成するために用います.また,ガウス分布の乱数を生成することもできます.この機能は,現実の世界のシステムをシミュレートする場合に役に立ちます.
Randomクラスには,次のコンストラクタがあります.
Random();
Random(long seed);
Randomクラスの主なインスタンスメソッドには以下のものがあります.
| void nextBytes(byte[] buffer) | bufferを乱数で埋める |
| double nextDouble() | double型の乱数を返す |
| float nextFloat() | float型の乱数を返す |
| double nextGaussian() | 標準正規分布の乱数を返す |
| int nextInt() | int型の乱数を返す |
| logn nextLong() | long型の乱数を返す |
| void setSedd(long seed) | 乱数ジェネレータに種を与える |

import java.util.*;
class RandomInt
{
public static void main(String[] args)
{
Random r = new Random();
for(int i=0; i < 10; i++)
{
System.out.println(r.nextInt());
}
}
}
実行結果
Dateクラス
Dateクラスは,特定の日付と時刻に関する情報を得るときに用います.
Dateクラスには,次のコンストラクタがあります.
Date();
Date(long msec);
1つ目のコンストラクタでは,現在の日付と時刻を表すオブジェクトが返されます.2つ目のコンストラクタでは,基準時(1970年1月1日)からの経過時間をミリ秒で表すオブジェクトがかえされます.
Dateクラスの主なインスタンスメソッドには以下のものがあります.
| boolean after(Date d) | dが現在の日付より後ならば真を返す |
| boolean before(Date d) | dが現在の日付より前ならば真を返す |
| boolean equal(Date d) | dが現在の日付と同じならば真を返す |
| double nextGaussian() | 標準正規分布の乱数を返す |
| long getTime() | 基準時からの経過時間をミリ秒で返す |
| void setTime(long msec) | 基準時からmsec経過した日付と時刻をオブジェクトに設定 |
| String toString() | 日付を文字列にして返す |

import java.util.*;
class DateNow
{
public static void main(String[] args)
{
Date currentDate = new Date();
System.out.println(currentDate);
Date baseDate = new Date(0);
System.out.println(baseDate);
}
}
実行結果