ラッパークラスの主要な利点は,それらが文字列を基本データ型に変換するメソッドを提供していることです.つまり,データは普段文字列として扱い,必要に応じて変えることができるということです.そこで,まず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);
}
}
実行結果