はじめに
第4回目の本稿からはJava SEのAPI(基本API)を中心に紹介します。今回は、もっとも基本的なクラスが含まれているjava.langパッケージのAPIから、まず代表的なクラスの概要説明、そして、Androidアプリケーションにとっても重要な概念であるスレッドを中心に解説することにします。
なお各クラスの詳細な仕様につきましては、オンラインのJava Platform, Standard Edition 6 API仕様や参考書籍などをご覧ください。
対象読者
Androidアプリケーションの開発を始めたい方で、JavaとEclipseのごく基本的な知識がある方を対象とします。
java.langパッケージ
Java SEには、さまざまなパッケージが存在します。そのひとつのjava.langパッケージには、文字列操作、データの変換、数値演算、スレッド処理といった基本的な機能のAPIが含まれています。
主なクラス
通常、パッケージに含まれるクラスを利用するには、import宣言を行うか、またはパッケージ名もつけた完全なクラス名(完全限定名)を記述する必要があります。しかし、このパッケージにかぎり、インポート宣言せずともコンパイラによって暗黙的にimportされるため、いきなりjava.lang内のクラスを記述することができます。たとえば、おなじみのSystemクラスは、次のような完全限定名やimport宣言は不要で、すぐにSystem.out.printlnと書けるのです。
// import java.lang.*; 暗黙的に行われる java.lang.System.out.println("文字列"); // 完全限定名 System.out.println("文字列");
次の表は、java.langパッケージの主なクラスです。
主なクラス | 説明 |
System | 標準入力や標準出力などのクラス |
String、StringBuffer、StringBuilder | 文字列クラス |
Math | 指数関数や平方根、三角関数といった数値演算クラス |
Boolean、Byte、Integerなど | ラッパークラス |
Object | すべてのクラスのスーパークラス |
Throwable | 例外のスーパークラス |
Thread | スレッド処理クラス |
Class<T> | 実行中のクラスおよびインターフェースを表すクラス |
Systemクラス
Systemクラスは、やや特殊なクラスでインスタンス化することができません。主に、標準入力や標準出力、標準エラー出力を扱うために、フィールドやメソッドがスタティックで定義されています。
主なフィールド/メソッド
一般のJavaシステムでは、Systemクラスでもっともよく利用されるのが、次に示すフィールドです。
フィールド | 説明 |
static InputStream in | 標準入力ストリーム |
static PrintStream out | 標準出力ストリーム |
static PrintStream err | 標準エラー出力ストリーム |
ただAndroidアプリケーションで使用するのは、第2回目に紹介したログ出力程度で、他の用途でこれらを直接使うことはあまりないでしょう。
ここでのポイントは、in、out、errが、すべてストリームを戻り値として返すことです。ストリームとは、文字やバイト列の流れを表す概念で、Javaの入出力機能はすべてこの概念をもとに設計されています(ストリームについては、あらためて次回以降で説明します)。
その他のSystemクラスのメソッドには、現在時刻をミリ秒で取得するcurrentTimeMillisメソッド、配列をコピーするarraycopyメソッドといったものがあります。