Java APIのメソッド
10.5 Java APIのメソッド
本節では、10.1で少し触れた、Javaであらかじめ用意されている、よく使われる標準API( Application Program Interface) のメソッドを紹介します。
10.5.1 標準APIの主要クラス
Javaの標準APIのうち、主要なクラスには下の表のようなものがあります。
とてもたくさんありますが、ここで紹介しているクラスやメソッドを全て覚える必要はありません。ここでは、どのようなものがあり、どのようなことができるかを、大まかに知っておく程度で大丈夫です。
| パッケージ | クラス | 概要 |
|---|---|---|
| java.awt | Graphics | すべてのグラフィックコンテキストの抽象基底クラス |
| java.awt.image | BufferedImage | イメージデータを保持 |
| java.io | BufferedReader | 文字型入力ストリームから効率よくテキストを読み取る手段を提供 |
| BufferedWriter | 文字型出力ストリームに効率よくテキストを書き込む手段を提供 | |
| File | ファイルシステム情報を保持 | |
| FileReader | テキストファイルからの読み取り手段を提供 | |
| java.lang | ラッパクラス | 基本データ型の操作に利用(Integer、Longなど) |
| Math | 指数関数、対数関数、三角関数などの基本的な演算処理 | |
| Package | パッケージ名、仕様、バージョンに関する情報を保持 | |
| String | 文字列の加工・制御手段を提供する | |
| StringBuffer | 可変長文字列の操作手段を提供する | |
| System | システム全般の制御、情報の取得手段を提供 | |
| java.sql | CallableStatement | ストアドプロシージャを実行 |
| Connection | データベースとの接続を管理 | |
| DatabaseMetaData | データベースの構成情報を保持 | |
| PreparedStatement | 準備済みSQL命令を実行 | |
| ResultSet | データベースから抽出した結果セットを操作 | |
| ResultSetMetaData | 結果セットの構成情報を保持 | |
| Statement | 静的なSQL命令を実行 | |
| DriverManager | JDBCドライバを管理 | |
| java.text | DecimalFormat | 10進数を整形する手段を提供 |
| SimpleDateFormat | 日付型データを整形する手段を提供 | |
| java.util | Calendar | 標準的なカレンダーを提供 |
| Date | 日付情報を保持、また操作する手段を提供 | |
| ArrayList | サイズ変更可能な配列の実装 | |
| HashMap | 連想配列を実装 | |
| Locale | ロケール(地域)情報を管理 | |
| Scanner | 入力ストリームをプリミティブ型またはString型に変換するテキストスキャナを提供 | |
| ResourceBundle | リソース(プロパティ)ファイルの参照手段を提供 | |
| StringTokenizer | 文字列をトークンに分解 | |
| java.util.regex | Matcher | 正規表現マッチングを制御する |
| Pattern | コンパイル済みの正規表現パターンを保持する | |
| java.util.zip | ZipEntry | Zipエントリを表現 |
| ZipOutputStream | Zip形式で書き込みを行うための出力ストリーム |
これから、標準APIのメソッドの代表的なものをいくつか紹介していきます。本テキストでも使用し、今後も使用頻度が高くなると思われる、文字列を扱うStringクラス、テキスト入力を扱うScannerクラスと、数学的計算を扱うMathクラス、基本データ型に対応したラッパークラスを紹介します。
10.5.2 Stringクラス
Stringクラスは、文字列を扱うクラスです。
| メソッド | 概要 |
|---|---|
| int compareTo(String anotherString) | 文字列を辞書的に比較する(元の文字列が大きい場合には正数、小さい場合には負数、等しい場合には0)。 |
| int compareToIgnoreCase(String str) | 文字列を辞書的に比較する(大文字小文字を区別しない)。 |
| String concat(String str) | 文字列strを現在の文字列に連結する。 |
| boolean endsWith(String suffix) | 文字列が接尾辞suffixで終わるかどうかを返す。 |
| boolean equals(Object anObject) | 文字列が指定された文字列anObjectと意味的に等しいかどうかを返す。 |
| int indexOf(String str[,int fromIndex]) | 文字列中で指定文字strが最初に登場するインデックス位置。fromIndexが指定された場合には、そのインデックス値から走査を開始する。 |
| int lastIndexOf(String str, int fromIndex) | 文字列中で指定文字strが最後に登場するインデックス位置。fromIndexが指定された場合には、そのインデックス値から走査を開始、 length() 文字列の長さを返す。 |
| String replace(char oldChar, char newChar) | 文字列中の文字oldCharをnewCharに置き換える。 |
| String replaceAll(String regex, String replacement) | 正規表現パターンregexに合致するすべての部分文字列を、指定された文字列replacementで置き換える。 |
| String replaceFirst(String regex, String replacement) | 正規表現パターンregexに合致する最初の部分文字列を、指定された文字列replacementで置き換える。 |
| String[] split(Stringregex[, int limit]) | 正規表現パターンregexに合致する個所で文字列を分割する。ただし、limitが指定された場合にはその回数分だけ分割する。 |
| boolean startsWith(String prefix) | 文字列が接頭辞prefixで始まるかどうか(true|false) |
| String substring(int beginIndex, int endIndex) | beginIndex+1文字目~endIndex文字目までの部分文字列を抽出する。 |
| String toLowerCase() | 小文字に変換する。 |
| String toUpperCase() | 大文字に変換する。 |
| String trim() | 前後の空白を削除する。 |
| String valueOf(int i) | 引数データを文字列型に変換して返す。 |
10.5.3 Scannerクラス
Scannerクラスは、基本データ型の値や文字列の入力を扱うクラスです。
| メソッド | 概要 |
|---|---|
| boolean hasNext() | 入力された次の値がある場合にtrueを返す。 |
| boolean nextBoolean() | 入力された次の値をbooleanとして読み取る。 |
| byte nextByte() | 入力された次の値をbyteとして読み取る。 |
| double nextDouble() | 入力された次の値をdoubleとして読み取る。 |
| float nextFloat() | 入力された次の値をfloatとして読み取る。 |
| int nextInt() | 入力された次の値をintとして読み取る。 |
| String nextLine() | 読み取る最初の位置を次に進め、スキップした値をStringとして読み取る。 |
| long nextLong() | 入力された次の値をlongとして読み取る。 |
| short nextShort() | 入力された次の値をshortとして読み取る。 |
| Scanner skip(String pattern) | 指定された文字列に一致する値をスキップする。 |
10.5.4 Mathクラス
Mathクラスは、指数関数や対数関数、三角関数、平方根、乱数生成などといった数学演算を扱うクラスです。Mathクラスに属するメソッドはすべてstaticメソッドです。
| メソッド | 概要 |
|---|---|
| double abs(double a) | 絶対値 |
| double acos(double a) | 指定角度のアークコサイン |
| double asin(double a) | 指定角度のアークサイン |
| double atan(double a) | 指定角度のアークタンジェント |
| double ceil(double a) | 小数値の切り上げ |
| double cos(double a) | 指定角度のコサイン |
| double floor(double a) | 小数値の切り捨て |
| double log(double a) | 自然対数(底はe) |
| int max(int a, double b) | 引数のうち大きい方を返す。 |
| int min(int a, double b) | 引数のうち小さい方を返す。 |
| double max(double a, double b) | 引数のうち大きい方を返す。 |
| double min(double a, double b) | 引数のうち小さい方を返す。 |
| double pow(double a, double b) | aのb乗 |
| double sin(double a) | 指定角度のサイン |
| double sqrt(double a) | aの平方根 |
| double tan(double a) | 指定角度のタンジェント |
| double toDegrees(double angrad) | ラジアン値を度に変換 |
| double toRadians(double angdeg) | 度をラジアン値に変換 |
10.5.5 ラッパークラス
ラッパークラスは、基本データ型の値を参照型のように扱うためのクラスです。
詳しい説明は「Java基礎」テキストで行います。
現段階では基本データ型の値に便利なメソッドを使えるようにしたもの、という程度に覚えておきましょう。
ラッパークラスには次のようなものがあります。
| 基本型 | ラッパークラス |
|---|---|
| int | Integer |
| short | Short |
| long | Long |
| byte | Byte |
| float | Float |
| double | Double |
| boolean | Boolean |
| char | Character |
10.5.6 JavaAPIのメソッドを使用したプログラム(1)
APIのメソッドを利用したプログラムを作ってみましょう。これは、入力した2つの整数の大小関係を表示させるプログラムです。
① ソース・フォルダー :myproj_intro/src
② パッケージ :jp.co.f1.intro.ch10
③ 名前 :ApiMethod1.java
④ 作成するメソッド・スタブの選択:public static void main(String[] args) にチェックを入れる
➢ ApiMethod1
package jp.co.f1.intro.ch10;
import java.util.Scanner;
public class ApiMethod1 {
public static void main(String[] args) {
Scanner sin = new Scanner(System.in);
System.out.print("1つ目の整数を入力してください。⇒");
String strNum1 = sin.nextLine();
int intNum1 = Integer.parseInt(strNum1);
System.out.print("2つ目の整数を入力してください。⇒");
int intNum2 = sin.nextInt();
if (intNum1 != intNum2) {
int maxNum = Math.max(intNum1, intNum2);
System.out.println(intNum1 + "と" + intNum2 + "では" + maxNum + "の方が大きいです。");
} else {
System.out.println(intNum1 + "と" + intNum2 + "は等しいです。");
}
}
}
実行結果
解説
このプログラムは、キーボードで整数を2回入力し、その値の大小をJava APIで用意されているメソッドを使って比較するものです。
まず、3行目と9行目でキーボード入力のための準備の記述を行っています。
10行目で、キーボード入力を促すメッセージを画面に表示し、11行目でキーボード入力された値をString型の変数strNum1に代入します。12行目で、Integer.parseIntメソッドを使い、変数strNum1の値をint型に変換しています。Integer.parseIntメソッドは、Java APIで用意されているメソッドです。
15行目では、11行目と違いint型の値としてキーボード入力された値を取得し、変数に代入しています。
17~22行目はif – else文です。もし、変数intNum1と変数intNum2の値が等しくなかった場合は18、19行目の処理を行い、そうでない場合(変数intNum1と変数intNum2の値が等しい)は、21行目の処理が行われます。
if文の条件式が成立した場合について説明します。
18行目では、int型の変数maxNumを宣言し、Math.maxメソッドの戻り値で初期化しています。Math.maxメソッドとは、Java APIのメソッドで、引数にint型の値を2つ受け取り、その2つのうち大きい方の値を戻り値として返すメソッドです。
変数intNum1の値が5、変数intNum2の値が10の時、Math.maxメソッドの戻り値は10となり、変数maxNumには10が代入されます。
10.5.7 JavaAPIのメソッドを使用したプログラム(2)
次に、文字列操作のメソッドを使ったプログラムを作ってみましょう。
ここではsubstringメソッドと splitメソッドを利用して、文字列の一部分を取り出したり、記号で分割した結果を表示します。
① ソース・フォルダー :myproj_intro/src
② パッケージ :jp.co.f1.intro.ch10
③ 名前 :ApiMethod2.java
④ 作成するメソッド・スタブの選択:public static void main(String[] args) にチェックを入れる
➢ ApiMethod2
package jp.co.f1.intro.ch10;
public class ApiMethod2 {
public static void main(String[] args) {
String str1 = "12345";
String str2 = "AB:CD:EF";
System.out.println("「" + str1 + "」の先頭から3文字目は「" + str1.substring(0, 3) + "」です。");
System.out.println("「" + str1 + "」の3文字目から最後の文字は「" + str1.substring(2) + "」です。");
String[] strArray = str2.split(":");
for (int i = 0; i < strArray.length; i++) {
System.out.println("「:」で分割した" + (i + 1) + "つ目の文字は「" + strArray[i] + "」です。");
}
}
}
実行結果

解説
まず、7行目でString型変数str1を宣言し、そこに12345という文字列を代入しています。
”12345″ のように文字が並んでいる場合、その1文字1文字に対して配列と同じルールでインデックスが0から自動的に付けられます。その結果、”12345″の文字とインデックスの対応は次のようになります。
| インデックス | 0 | 1 | 2 | 3 | 4 |
| 文字 | “1” | “2” | “3” | “4” | “5” |
10行目・12行目では、substring メソッドを使って、文字列の一部を取り出して表示します。
substringメソッドは、文字列から特定の範囲の文字を取り出すメソッドです。
substring(0, 3)は、インデックス 0番目から3番目の「手前」までを抜き出すため、”12345″ のうち 0番目から2番目の文字である”123″が取り出されます。
また、substring(2)は、インデックス2番目の位置から最後までを抜き出し、結果は”345″となります。
splitメソッドは、指定した区切り文字が見つかるたびに、その部分で文字列を切り分けて、切り分けた結果を配列として返すメソッドです。
8行目で用意した変数str2の値を、14行目でsplitメソッドを使って文字列をコロン「:」で分割し、その結果を配列に代入しています。
例えば”AB:CD:EF”のような文字列の場合、コロンごとに区切られ、”AB”, “CD”, “EF” のように分割され、それぞれがstrArrayの要素として格納されます。
16~18行目ではfor文による繰り返し処理で、分割された文字列が格納されている配列から要素を順番に取り出し、その内容を1つずつ画面に表示しています。
変数iが0から配列の要素数−1まで1ずつ増えていき、その値に応じて繰り返し処理が行われます。strArray[i] で配列の各要素を順番に取り出し、(i + 1) を使って「1つ目」「2つ目」のように読みやすい番号にして表示しています。
このプログラムを実行すると、substring による文字列の部分抽出と、split による文字列の分割結果が順番に表示され、Java API の文字列操作メソッドの働きを確認することができます。