パッケージ java.langには,Java言語の設計にとって基本的なクラスが収められている。最も重要なクラスは
Object 及び Class とする。
Object は,クラス階層のルートであり,Class は,そのインスタンスによって実行時のクラスを表現する。
プリミティブ型の値は,あたかもオブジェクトであるかのように表現する必要がある場合が多い。ラッパークラスであるBoolean,Character,Integer,Long,Float,及び Double はこの目的のために使用する。例えば,型 Double のオブジェクトは,型 double
のフィールドをもち,その値への参照が、参照型の変数に格納できる方法によって、その値を表現している。これらのクラスは又,プリミティブ値の間で相互に変換するためのいくつかのメソッドを提供している。同様にequals,hashCode などの標準メソッドを使用可能とする。
クラス Math では,サイン,コサイン,平方根など広く使用されている数値演算を提供している。同様にクラス String 及び クラス StringBuffer では,広く使用されている文字列演算を提供している。
ClassLoader,Process,Runtime,SecurityManager,及びクラス System では,クラスの動的ロード,外部プロセスの作成,時刻などのホスト環境の照会,及びセキュリティ規則を管理する“システム処理”を提供している。
クラス Throwable は,throw 文
(14.16)によって投げられるオブジェクトを含んでいる。Throwable のサブクラスには,エラーと例外がある。
次にパッケージ java.lang で定義されるクラスの階層構造を示す。
Object20.1interfaceCloneable20.2Class20.3Boolean20.4Character20.5Number20.6Integer20.7Long20.8Float20.9Double20.10Math20.11String20.12StringBuffer20.13ClassLoader20.14Process20.15Runtime20.16SecurityManager20.17System20.18interface Runnable20.19Thread20.20ThreadGroup20.21Throwable20.22ErrorLinkageErrorClassCircularityErrorClassFormatErrorExceptionInInitializerErrorIncompatibleClassChangeErrorAbstractMethodErrorIllegalAccessErrorInstantiationErrorNoSuchFieldErrorNoSuchMethodErrorNoClassDefFoundErrorUnsatisfiedLinkErrorVerifyErrorVirtualMachineErrorInternalErrorOutOfMemoryErrorStackOverflowErrorUnknownErrorThreadDeathExceptionClassNotFoundExceptionCloneNotSupportedExceptionIllegalAccessExceptionInstantiationExceptionInterruptedExceptionRuntimeExceptionArithmeticExceptionArrayStoreExceptionClassCastExceptionIllegalArgumentExceptionIllegalThreadStateExceptionNumberFormatExceptionIllegalMonitorStateExceptionIndexOutOfBoundsExceptionNegativeArraySizeExceptionNullPointerExceptionSecurityException
java.lang.ObjectObject
は,クラス階層の唯一のルートとする。配列を含むすべてのオブジェクトは クラス
Object のメソッドを実装する。
public classObject{ public final ClassgetClass(); public StringtoString(); public booleanequals(Object obj); public inthashCode(); protected Objectclone() throws CloneNotSupportedException; public final voidwait()
throws IllegalMonitorStateException,
InterruptedException; public final voidwait(long millis)
throws IllegalMonitorStateException,
InterruptedException; public final voidwait(long millis, int nanos)
throws IllegalMonitorStateException, InterruptedException; public final voidnotify() throws IllegalMonitorStateException; public final voidnotifyAll() throws IllegalMonitorStateException; protected voidfinalize()
throws Throwable; }
20.1.1 public final Class
getClass()
このメソッドは,このオブジェクトのクラスを表現する型 Class
の一意のオブジェクト (20.3)への参照を返す。このオブジェクト
Class は,表現されたクラスの static メソッド
synchronized によってロックされたオブジェクトである。
20.1.2 public String
toString()
toString
は,このオブジェクトをテキストで表す文字列を返す。これは,その文字列を読む人にとって簡潔で有用な情報を与える。
メソッド toString は クラス Object
で定義され,そのオブジェクトインスタンスのクラス名,アットマーク
@,オブジェクトのハッシュコード値の符号なし 16進数表現から構成される文字列を返す。つまり,このメソッドは,次の式の値に等しい文字列を返す。
getClass().getName() +このメソッドは,次のクラスで上書きされる。'@'+ Integer.toHexString(hashCode())
Class (20.3),Boolean (20.4),Character (20.5),Integer (20.7),Long (20.8),Float (20.9),Double (20.10),String (20.12) ,StringBuffer (20.13),Thread (20.20),ThreadGroup (20.21) ,Throwable (20.22.4),及びBitSet (21.2)。
20.1.3 public boolean
equals(Object obj)
このメソッドは,あるオブジェクトがこのオブジェクトと,“等しい”かを判定する。
equals に実装されている等価関係の一般規則を以下に挙げる。
x
について,x.equals(x) は code>true を返す。
x 及び
y について,y.equals(x) が true
を返す場合に,かつその場合に限り,x.equals(y) は
true を返す。
x,y,及び z
について,x.equals(y) が true
を返し,y.equals(z) が true
を返す場合,x.equals(z) は true を返す。
x 及び
y について,equals 比較で使用される
x 及び y
の情報が変更されない限り,x.equals(y) の呼び出しは常に
true を返すか,常にfalseを返す。
x.equals(null) は
false を返す。
Object で定義される メソッド equals
は,オブジェクトの等価関係を最も厳密に区別する。つまり,任意の参照値
x 及び y について,x 及び
yが同一のオブジェクトを参照している場合かつその場合にだけ,((Object)x).equals(y) は true を返す。
このメソッドは,次のクラスで上書きされる。Boolean (20.4),Character (20.5) ,Integer (20.7),Long (20.8),Float (20.9),Double (20.10),String (20.12),及び BitSet (21.2)。
20.1.4 public int
hashCode()
このメソッドは,Javaライブラリクラス java.util.Hashtable
(21.5)で提供されているハッシュテーブルを利用するために使用する。
hashCode を同じオブジェクトに対して複数回呼び出しても,このメソッドは常に同じ整数を返す。整数は,正,負,又はゼロとする。ただし,この整数は,異なる Javaアプリケーション間,又は同じアプリケーションの異なる実行間で一定である必要はない。
二つのオブジェクトが メソッド equals(20.1.3)で等しいと判定された場合,それぞれのオブジェクトに対してメソッド hashCodeを呼び出したときの戻り値は,同じ整数である必要がある。
二つのオブジェクトが メソッド equals
(20.1.3)で異なると判定された場合,それぞれのオブジェクトに対してメソッド hashCodeを呼び出したときの戻り値は,必ずしも異なる整数である必要はない。ただし,プログラマは,等価ではないオブジェクトに対しては異なる戻り値を取得するように実装しておくと,ハッシュテーブルのパフォーマンスが向上することがあることを知っておく必要がある。
Object で定義された メソッド hashCodeは,実用的な範囲で,異なるオブジェクトに対しては異なる整数を返す。
このメソッドは,次のクラスで上書きされる。Boolean
(20.4) ,Character
(20.5),Integer
(20.7),Long
(20.8),Float
(20.9) ,Double
(20.10),String
(20.12),及び BitSet
(21.2)。
20.1.5 protected Object
clone()
throws
CloneNotSupportedException
cloneは,このオブジェクトの複写を作成し,それを返す。“複写”の正確な意味は,オブジェクトのクラスによって異なる。通常,任意のオブジェクト
x に対して,次の式は true になる。
x.clone() != x次の式も
true になる。
x.clone.getClass() == x.getClass()ただし,これも絶対条件ではない。また,次の式も
true になる。
x.clone.equals(x)オブジェクトを複写すると,通常はオブジェクトのクラスのインスタンスが新しく作成されるが,内部データ構造を複写することが必要な場合もある。
クラス Object の メソッド clone は,特定の処理を行ってクローンを作成する。最初に,このオブジェクトのクラスが,インタフェースCloneableを実装していなければ,CloneNotSupportedExceptionが投げられる。すべての配列は インタフェースCloneNotSupportedExceptionを実装していると見なされる。その他の場合,このメソッドは,このオブジェクトのクラスの新しいインスタンスを作成し,すべてのフィールドを初期化し,このオブジェクトの対応するフィールドと同一の内容に,代入文と同じ方法で書き替える。つまり,フィールドの内容そのものがクローンされるのではない。したがって,このメソッドでは“深い複写”ではなく“浅い複写”を行なう。
クラス Object 自体は インタフェースCloneableを実装していない。したがってクラス Objectのオブジェクトに対して メソッド cloneを呼び出すと,実行時に例外が投げられる。メソッド clone は,クラス Object で実装されている。クラス Object の メソッド clone は,インタフェースCloneableを実装するサブクラス用の汎用ユーティリティとして実装されている。メソッド cloneは,上書きされることがある。この場合,次の呼び出しを行えば,上書きした定義から上書きされたクラス Object の メソッド clone を参照できる。
super.clone()
20.1.6 public final void
wait()
throws IllegalMonitorStateException,
InterruptedException
このメソッドは,別のスレッドがこのオブジェクトに対して メソッド notify (20.1.9)又は,メソッド notifyAll (20.1.10)を呼び出すまで,現在のスレッドを待機させる。
言い換えれば,このメソッドの動作は,単に wait(0) (20.1.7)の呼び出しを行うのと同じとする。
20.1.7 public final void
wait(long millis)
throws
IllegalMonitorStateException,
InterruptedException
このメソッドは,別のスレッドがこのオブジェクトに対してメソッド notify (20.1.9)
又は,メソッド notifyAll (20.1.10)を呼び出すか,指定された実時間が経過するまで,現在のスレッドを待機させる。このメソッドは,現在のスレッドがこのオブジェクトに対して既に同期化されている場合にだけ,呼び出すことができる。現在のスレッドがこのオブジェクトのロックを所有していない場合,IllegalMonitorStateExceptionが投げられる。
このメソッドは,現在のスレッド (これを T とする)をこのオブジェクトの待機集合
現在のスレッドが待機中に,他のスレッドによって割り込まれた場合(20.20.31),
メソッド 20.1.8
このメソッドは,別のスレッドがこのオブジェクトに対して メソッド
20.1.9
このオブジェクトに対して待機中 (20.1.7)のスレッドがある場合,そのうちの一つが選択されて再開される。この選択は任意であり、処理系の実装によって決定される。
メソッド
再開されたスレッドは,現在のスレッドがこのオブジェクトに対してかけたロックを放棄するまで,処理を進めることができない。再開されたスレッドは,通常通り,このオブジェクトに対する同期化をめぐって他のスレッドと競合することになる。例えば,再開したスレッドであっても,次にこのオブジェクトにロックをかける際に,有利も不利も受けない。
20.1.10
このオブジェクトに対して待機中(20.1.7)のすべてのスレッドを再開する。
メソッド
再開されたスレッドは,現在のスレッドがこのオブジェクトに対してかけたロックを放棄するまで,処理を進めることができない。再開されたスレッドは,通常通り,このオブジェクトに対する同期化をめぐって他のスレッドと競合することになる。例えば,再開したスレッドであっても,次にこのオブジェクトにロックをかける際に,有利も不利も受けない。
20.1.11
メソッド
クラス
Javaでは,あるオブジェクトに対してどのスレッドが メソッド
あるオブジェクトに対して メソッド
Java仮想計算機は,あるオブジェクトに対して メソッド クラス
20.3.1
20.3.2
この
このクラスのオブジェクトが配列のクラスを表現する場合,その名前は,配列の入れ子の深さを表現する
一つ以上の"
20.3.3
この 20.3.4
この 20.3.5
このメソッドは,インタフェースを表現するオブジェクトの配列を返す。
この配列は空である場合もある。この
この 20.3.6
このメソッドは,この 20.3.7
このメソッドは,このクラスをロードしたクラスローダ (20.14)への参照を返す。このクラスにクラスローダがない場合は, 20.3.8
このメソッドは,クラスの完全限定名が文字列で指定されると,クラスの検索,ロード
(12.2),及びリンク (12.3)を試みる。成功すると,クラスの 20.4.1
このフィールドの定数値は,プリミティブ値 20.4.2
このフィールドの定数値は,プリミティブ値 20.4.3
このコンストラクタは,実引数で指定されたプリミティブ値を表す 20.4.4
このコンストラクタは,
20.4.5
この
このメソッドは,Object (20.1.2)のメソッド 20.4.6
実引数が
このメソッドは,Objectの メソッド 20.4.7
この
このメソッドは,Objectの メソッド 20.4.8
この 20.4.9
実引数が空でなく,かつ大文字小文字の区別を無視して,文字列
例えば,
例えば, 20.4.10
実引数により名前が付けられたシステム属性 (20.18.9)の値が,大文字小文字の区別を無視して,文字列 Unicode 1.1.5 属性テーブルは,次の URL で WWW から入手できる。
03D0;GREEK BETA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER CURLED BETA;;0392;;0392 03D1;GREEK THETA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT THETA;;0398;;0398 03D5;GREEK PHI SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT PHI;;03A6;;03A6 03D6;GREEK PI SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER OMEGA PI;;03A0;;03A0 03F0;GREEK KAPPA SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER SCRIPT KAPPA;;039A;;039A 03F1;GREEK RHO SYMBOL;Ll;0;L;;;;;N;GREEK SMALL LETTER TAILED RHO;;03A1;;03A1 FF10;FULLWIDTH DIGIT ZERO;Nd;0;EN;0030;0;0;0;N;;;;; FF11;FULLWIDTH DIGIT ONE;Nd;0;EN;0031;1;1;1;N;;;;; FF12;FULLWIDTH DIGIT TWO;Nd;0;EN;0032;2;2;2;N;;;;; FF13;FULLWIDTH DIGIT THREE;Nd;0;EN;0033;3;3;3;N;;;;; FF14;FULLWIDTH DIGIT FOUR;Nd;0;EN;0034;4;4;4;N;;;;; FF15;FULLWIDTH DIGIT FIVE;Nd;0;EN;0035;5;5;5;N;;;;; FF16;FULLWIDTH DIGIT SIX;Nd;0;EN;0036;6;6;6;N;;;;; FF17;FULLWIDTH DIGIT SEVEN;Nd;0;EN;0037;7;7;7;N;;;;; FF18;FULLWIDTH DIGIT EIGHT;Nd;0;EN;0038;8;8;8;N;;;;; FF19;FULLWIDTH DIGIT NINE;Nd;0;EN;0039;9;9;9;N;;;;; 03DA;GREEK LETTER STIGMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER STIGMA;;;; 03DC;GREEK LETTER DIGAMMA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER DIGAMMA;;;; 03DE;GREEK LETTER KOPPA;Lu;0;L;;;;;N;GREEK CAPITAL LETTER KOPPA;;;; 03E0;GREEK LETTER SAMPI;Lu;0;L;;;;;N;GREEK CAPITAL LETTER SAMPI;;;; 03C2;GREEK SMALL LETTER FINAL SIGMA;Ll;0;L;;;;;N;;;03A3;;03A3
Java 1.1では,Unicode第1.1.5版に基づいてここで定義されるメソッド,又は,希望的観測では,新しいUnicode第2.0版を使用した新しいバージョンのメソッドが利用できるようになる予定である。Unicode第2.0版の文字属性テーブルは,現在WWWでファイルとして公開され,次のURLから入手可能である。
Unicode第2版での,もっとも大きな変更点は,朝鮮語(チョソノ)のハングルを大きく配置しなおしたことである。また,その他,細かい修正も加えられている。
20.5.1
[このフィールドは,Java Version 1.1 で導入される予定]
20.5.2
[このフィールドは,Java Version 1.1 で導入される予定]
20.5.3
このフィールドの定数値は,クラス 20.5.4
このフィールドの定数値は,クラス 20.5.5
このコンストラクタは,実引数で指定されたプリミティブ値を表すオブジェクト
20.5.6
このメソッドは,長さが
20.5.7
実引数が空でなく,かつこの
オブジェクトのメソッド 20.5.8
この
オブジェクトのメソッド 20.5.9
この 20.5.10
文字実引数が定義済みUnicode文字である場合,またその場合にだけ,
文字は,次の条件のうち少なくとも一つが真である場合に,またその場合にだけ,定義済みUnicode文字とする。
[このメソッドは,ここで定義されている通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入される予定である。
20.5を参照のこと。]
20.5.11
文字実引数が小文字である場合に,またその場合にだけ,
文字は,次の条件のすべてを満たす場合に,またその場合にだけ,小文字であると見なされる。
Unicode文字の最初の128文字のうち,次の26文字だけが小文字であると見なされる。
20.5.12
文字実引数が大文字である場合に,またその場合にだけ
文字は,次の条件のすべてを満たす場合に,またその場合にだけ,大文字であると見なされる。
Unicode文字の最初の128文字のうち,次の26文字だけが大文字だと見なされる。
20.5.13
文字実引数がタイトルケースである場合に,またその場合にだけ,
“タイトルケース”という概念がUnicodeに導入されたのは,ある特殊な状況に対処するためであった。Unicodeには,1文字として扱われながら見た目には二つの普通のラテン文字に見える文字がある。例えば,Unicodeには‘LJ’(
文字は,次の条件の両方が真である場合に,またその場合にだけ,タイトルケースであると見なされる。
20.5.14
文字実引数が数字である場合に,またその場合にだけ
文字は,次の条件の両方が真である場合に,またその場合にだけ,数字であると見なされる。
20.5.15
文字実引数が文字(letter)である場合に,またその場合にだけ,
文字が letter又は数字 (20.5.16)
のいずれかであり,かつ数字 (20.5.14)
ではない場合に,またその場合にだけ,文字は letter と見なされる。
[このメソッドは,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。20.5を参照のこと。]
20.5.16
文字実引数が文字か数字(letter-or-digit)の場合に,またその場合にだけ,
文字は,定義済みUnicode文字(20.5.10)であり,その文字コードが次の範囲に該当する場合に,またその場合にだけ,文字か数字(letter-or-digit)と見なされる。
[このメソッドは,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。20.5を参照のこと。]
20.5.17
文字実引数がJava識別子の先頭に来ることのできる文字である場合に,またその場合にだけ,
実引数は,文字(20.5.15)又はドル記号
[このメソッドは,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。20.5を参照のこと。]
20.5.18
文字実引数がJava識別子の2文字目以降に現われることのできる文字である場合に,またその場合にだけ,
文字は,文字又は数字(letter-or-digit) (20.5.16)又はドル記号
[このメソッドは,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。20.5を参照のこと。]
20.5.19
実引数 20.5.20
文字
前述した修正を加えたUnicode1.1.5のUnicode属性テーブルで定義される小文字の対応表を次に挙げる。次の表では矢印の左側の文字に対応する小文字が矢印の右側に示されている。
メソッド
[メソッド 20.5.21
文字
前述した修正を加えたUnicode1.1.5のUnicode属性テーブルで定義される大文字の対応表を次に挙げる。次の表では矢印の左側の文字に対応する大文字が矢印の右側に示されている。
メソッド
[メソッド 20.5.22
文字
メソッド
例:
例:
例:
[このメソッドは,バージョン1.1のJavaで導入予定である。]
20.5.23
文字
基数は,その値が
文字は,次のいずれかが成り立つ場合に,またその場合にだけ,有効な数字だと判定される。
20.5.24
指定された基数で与えられた数字を表現する文字を返す。
基数は,その値がCharacter.MIN_RADIX
(20.5.3)
より小さくなく,及びCharacter.MAX_RADIX(20.5.4)より大きくない場合に,またその場合にだけ,有効とする。
数値は,負でなく,
数値が
20.6.1
メソッド
20.6.2
メソッド
20.6.3
メソッド
20.6.4
メソッド
20.7.1
このフィールドの定数値は,型 20.7.2
このフィールドの定数値は,型 20.7.3
このコンストラクタは, 20.7.4
このコンストラクタは, 20.7.5
この
このメソッドは, 20.7.6
実引数が
オブジェクトのメソッド 20.7.7
この
20.7.8
この
20.7.9
この
20.7.10
この
20.7.11
この
20.7.12
実引数を符号付き10進数表現に変換し,文字列として返す。これは,実引数を二つ取るメソッド
20.7.13
一つ目の実引数の整数値を2番目の実引数で指定された整数を基数とする数値の符号付き表現に変換し,その値を文字列として返す。
基数が Character.MIN_RADIX (20.5.3)より小さいか,
一つ目の実引数が負の場合,戻り値の最初の文字は
戻り値から符号を取った残りの文字は,一つ目の実引数の絶対値を表現する。絶対値がゼロの場合,一つのゼロ文字
20.7.14
実引数を符号なし16進数(基数16)に変換し,その値を文字列として返す。
戻り値は,実引数の符号なしの絶対値を表現する。実引数が負の場合,戻り値は実引数に
符号なしの絶対値がゼロの場合,一つのゼロ文字
20.7.15
実引数を符号なし8進数(基数8)に変換し,その値を文字列として返す。
戻り値は,実引数の符号なしの絶対値を表現する。実引数が負の場合,戻り値は実引数に
符号なしの絶対値がゼロの場合,一つのゼロ文字
20.7.16
実引数を符号なし2進数(基数2)に変換し,その値を文字列として返す。
戻り値は,実引数の符号なしの絶対値を表現する。実引数が負の場合,戻り値は実引数に
符号なしの絶対値がゼロの場合,一つのゼロ文字 20.7.17
実引数は,符号付き10進整数を表現していると解釈される。文字列内の文字はすべて10進数字であることが必要である。ただし,先頭文字が負の値を示す 20.7.18
一つ目の実引数は,二つ目の実引数で指定された整数を基数とする符号付き整数として解釈される。文字列内の文字は,すべて指定された基数にとって有効な文字であることが必要である(有効な文字かどうかは,
次のいずれかの場合,型
20.7.19
実引数は,符号付き10進整数を表現していると解釈される。これは,実引数を一つ取るメソッド
言い換えれば,このメソッドは,次の式の値に等しい
20.7.20
一つ目の実引数は,二つ目の実引数で指定された整数を基数とする符号付き整数として解釈される。これは,実引数を二つ取るメソッド 言い換えれば,このメソッドは,次の式の値に等しい
20.7.21
実引数は,メソッド 言い換えれば,このメソッドは,次の式の値に等しい
20.7.22
一つ目の実引数は,メソッド 言い換えれば,このメソッドは,次の式の値に等しい
20.7.23
一つ目の実引数は,メソッド 20.8.1 20.8.2 20.8.3
このコンストラクタは, 20.8.4
このコンストラクタは, 20.8.5
この
このメソッドは, 20.8.6
実引数が
オブジェクトのメソッド 20.8.7
この 20.8.8
この
20.8.9
この
20.8.10
この
20.8.11
この
20.8.12
実引数を符号付き10進数表現に変換し,文字列として返す。これは,実引数を二つ取るメソッド 20.8.13
一つ目の実引数の整数値を2番目の実引数で指定された整数を基数とする数値の符号付き表現に変換し,その値を文字列として返す。
一つ目の実引数が負の場合,戻り値の最初の文字は
戻り値から符号を取った残りの文字は,一つ目の実引数の絶対値を表現する。絶対値がゼロの場合,一つのゼロ文字
20.8.14
実引数を符号なし16進数(基数16)に変換し,その値を文字列として返す。
戻り値は,実引数の符号なしの絶対値を表現する。実引数が負の場合,戻り値は実引数に
符号なしの絶対値がゼロの場合,一つのゼロ文字
20.8.15
実引数を符号なし8進数(基数8)に変換し,その値を文字列として返す。
戻り値は,実引数の符号なしの絶対値を表現する。実引数が負の場合,戻り値は実引数に
符号なしの絶対値がゼロの場合,一つのゼロ文字
20.8.16
実引数を符号なし2進数(基数2)に変換し,その値を文字列として返す。
戻り値は,実引数の符号なしの絶対値を表現する。実引数が負の場合,戻り値は実引数に
符号なしの絶対値がゼロの場合,一つのゼロ文字 20.8.17
実引数は,符号付き10進整数を表現していると解釈される。文字列内の文字はすべて10進数字であることが必要である。ただし,先頭文字が負の値を示す
Javaのソースコード(3.10.1)の場合とは異なり,L又はlを文字列の最後に型指示子として使うことはできない。
20.8.18
一つ目の実引数は,二つ目の実引数で指定された整数を基数とする符号付き整数として解釈される。文字列内の文字は,すべて指定された基数にとって有効な文字であることが必要である(有効な文字かどうかは,
Javaのソースコード(3.10.1)の場合とは異なり,L又はlを文字列の最後に型指示子として使うことはできない。ただし,基数が
次のいずれかの場合,型
20.8.19
実引数は,符号付き10進整数を表現していると解釈される。これは,実引数を一つ取るメソッド
言い換えれば,このメソッドは,次の式の値に等しい
20.8.20
一つ目の実引数は,二つ目の実引数で指定された整数を基数とする符号付き整数として解釈される。これは,実引数を二つ取るメソッド
言い換えれば,このメソッドは,次の式の値に等しい
20.8.21
実引数は,メソッド
言い換えれば,このメソッドは,次の式の値に等しい
20.8.22
一つ目の実引数は,メソッド
言い換えれば,このメソッドは,次の式の値に等しいオブジェクト
20.8.23
一つ目の実引数は,メソッド
二つ目の実引数は,デフォルト値として使われる。指定された名前の属性が存在しない場合,又は属性の値が数値として正しい書式ではない場合,二つ目の実引数を返す。
20.9.1
このフィールドの定数値は,型 20.9.2
このフィールドの定数値は,型 20.9.3
このフィールドの定数値は,型 20.9.4
このフィールドの定数値は,型 20.9.5
このフィールドの定数値は,型 20.9.6
このコンストラクタは, 20.9.7
このコンストラクタは, 20.9.8
このコンストラクタは, 20.9.9
この オブジェクトのメソッド 20.9.10
実引数が
オブジェクトのメソッド 20.9.11
この
20.9.12
この
20.9.13
この
20.9.14
この
20.9.15
この
20.9.16
実引数は,以下に示す判読可能な文字列形式に変換される。すべての文字及び文字列は,ASCII文字とする。
[メソッド 20.9.17
文字列
Javaのソースコード(3.10.1)の場合と異なり,
F又はfを型指示子を文字列 20.9.18
この 20.9.19
実引数の値がNaNである場合に,またその場合にだけ, 20.9.20
この 20.9.21
実引数の値が正又は負の無限大である場合に,またその場合にだけ, 20.9.22
浮動小数点の実引数を,IEEE
754の“単精度”ビットレイアウト表現に変換したものを返す。
20.9.23
実引数は,IEEE 754の“単精度”ビットレイアウト表現に変換したものであると見なされ,この値を返す。
20.10.1
このフィールドの定数値は,型 20.10.2
このフィールドの定数値は,型 20.10.3
このフィールドの定数値は,型 20.10.4
このフィールドの定数値は,型 20.10.5
このフィールドの定数値は,型 20.10.6
このコンストラクタは, 20.10.7
このコンストラクタは, 20.10.8
この
オブジェクトのメソッド 20.10.9
実引数が
オブジェクトのメソッド 20.10.10
この 20.10.11
この
20.10.12
この
20.10.13
この
20.10.14
この
20.10.15
実引数は,以下に示す判読可能な文字列形式に変換される。すべての文字及び文字列は,ASCII文字とする。
[メソッド 20.10.16
文字列
Javaのソースコード(3.10.1)の場合と異なり, 20.10.17
この 20.10.18
実引数の値がNaNである場合に,またその場合にだけ, 20.10.19
この 20.10.20
実引数の値が正又は負の無限大である場合に,またその場合にだけ, 20.10.21
浮動小数点の実引数を,IEEE
754の“倍精度”ビットレイアウト表現に変換したものを返す。
20.10.22
実引数が,IEEE 754の“倍精度”ビットレイアウト表現に従って,浮動小数点表現であるとみなされ,その浮動小数点値が返されれる。
Java数学ライブラリは,1995年1月4日版の
これらの関数で使用するアルゴリズムの完全な記述は,この仕様書の今後のバージョンで行なう。
20.11.1
このフィールドの定数値は,自然対数の底 e に最も近い
20.11.2
このフィールドの定数値は,円周率 20.11.3
このメソッドは,
20.11.4
このメソッドは,
20.11.5
このメソッドは,
20.11.6
このメソッドは,
20.11.7
このメソッドは,
20.11.8
このメソッドは,
20.11.9
このメソッドは,
20.11.10
このメソッドは,
20.11.11
このメソッドは,
20.11.12
20.11.13
このメソッドは, 20.11.14
このメソッドは,IEEE 754規格に従って,二つの実引数の剰余を計算する。剰余の値は,
20.11.15
このメソッドは,実引数以上の値を持つ最小の(負の無限大に最も近い)整数を
20.11.16
このメソッドは,実引数以下の値を持つ最大の(正の無限大に最も近い)整数を
20.11.17
このメソッドは,実引数に最も近い整数を
20.11.18
実引数に
20.11.19
このメソッドは,実引数に
20.11.20
ゼロ以上でcode>1.0
より小さく,この範囲から(ほぼ)一律に選択された擬似乱数を正の符号を持つ
このメソッドが初めて呼び出されるときに,次の式と同じ方法で一つの擬似乱数ジェネレータが新しく作成される。
このメソッドは,複数のスレッドで正しく使用することができるように正しく同期化されている。ただし,多数のスレッドが高速で擬似乱数を発生する必要がある場合,各スレッドで独自の擬似乱数ジェネレータを所有すれば,競合を減らせる。
20.11.21
実引数が負の場合,実引数の符号を反転させた値を返す。実引数が
20.11.22
実引数が負の場合,実引数の符号を反転させた値を返す。実引数が
20.11.23
20.11.24
20.11.25
二つの実引数のうちの小さい方が---つまり, 20.11.26
二つの実引数のうちの小さい方が---つまり, 20.11.27
二つの実引数のうちの小さいほうが---つまり,負の無限大に近いほうを返す。二つの実引数が同じ値である場合,その同じ値を返す。
20.11.28
二つの実引数のうち小さい方が---つまり,負の無限大に近いほうを返す。二つの実引数が同じ値である場合,その同じ値を返す。
20.11.29
二つの実引数のうち大きい方が---つまり, 20.11.30
二つの実引数のうち大きい方が---つまり, 20.11.31
二つの実引数のうち大きい方が---つまり,正の無限大に近いほうを返す。二つの実引数が同じ値である場合,その同じ値を返す。
20.11.32
二つの実引数のうち大きい方が---つまり,正の無限大に近いほうを返す。二つの実引数が同じ値である場合,その同じ値を返す。
クラス
20.12.1
このコンストラクタは 20.12.2
このコンストラクタは 20.12.3
このコンストラクタは
20.12.4
このコンストラクタは
20.12.5
このコンストラクタは
20.12.6
このコンストラクタは 20.12.7
このコンストラクタは
20.12.8
このオブジェクト(既に
このメソッドは, 20.12.9
実引数が
オブジェクトのメソッド
メソッド 20.12.10
オブジェクトの長さに応じて,この 20.12.11
この 20.12.12
このメソッドは,この 20.12.13
この
次のいずれかの条件が成り立つ場合,
20.12.14
この
次のいずれかの条件が成り立つ場合,
20.12.15
文字配列を新しく作成し,それを返す。配列の長さは,このオブジェクト
20.12.16
実引数が
少なくとも次のうち一つが成り立つ場合,二つの文字は,大文字小文字を区別せずに同じであると見なされる。
メソッド 20.12.17
この
辞書順とは,次の定義による。二つの文字列が異なる場合,両方の文字列に対して有効なインデクス位置にある文字が異なるか,文字列の長さが異なるか,又はその両方とする。二つの文字列が,複数のインデクス位置で異なる場合,k をそのうちの最小のインデクスとする。位置 k にある文字の値を
20.12.18
この 20.12.19
この 20.12.20
実引数によって表現される文字列がこの
実引数が空文字列である場合,又はメソッド 20.12.21
実引数によって表現される文字列がこの
20.12.22
実引数によって表現される文字列がこの
実引数が空文字列である場合,又はメソッド 20.12.23
code>ch を値に持つ文字が,この 20.12.24
20.12.25
文字列
20.12.26
文字列
20.12.27
20.12.28
code>ch を値に持つ文字が,この
20.12.29
文字列
20.12.30
文字列
20.12.31
この
20.12.32
この
20.12.33
実引数の文字列の長さがゼロである場合,この
20.12.34
文字
20.12.35
この
20.12.36
この
20.12.37
この それ以外の場合で,
それ以外の場合で,k をこの文字列内でコードが このメソッドは,空白類
(20.5.19)を文字列の先頭と末尾から削除する場合に使用する。実際には,すべてのASCII制御文字を削除できる。
20.12.38
実引数が 20.12.39
文字列が作成され,返される。この文字列は,文字配列実引数に現在含まれている文字列を表現する。文字配列の内容が複写される。これ以降,文字配列を変更しても,新しく作成された文字配列には影響しない。
20.12.40
文字列が作成され,返される。この文字列は,文字配列実引数の部分配列に現在含まれている文字列を表現する。実引数
20.12.41
実引数が
実引数が 20.12.42
文字列が作成され,返される。文字列は, 20.12.43
文字列が作成され,返される。文字列は,実引数を一つ取るメソッド 20.12.44
文字列が作成され,返される。文字列は,実引数を一つ取るメソッド
20.12.45
文字列が作成され,返される。文字列は,実引数を一つ取るメソッド
20.12.46
文字列が作成され,返される。文字列は,実引数を一つ取るメソッド
20.12.47
初期状態では空の文字列プールがクラス
メソッド
したがって,任意の二つの文字列
すべての文字列リテラルと文字列値の定数式に対して,基準表現が作成される
(3.10.5)。
文字列バッファは,複数のスレッドで安全に使用できる。
メソッドは,任意の特定のインスタンスに対するすべての処理が,あたかも,関係する個々のスレッドが実行するメソッド呼出しの順序と整合する順序で発生するかのように振舞うように,必要に応じて同期化される。
文字列バッファは,コンパイラが二項文字列連結演算子
例えば,
一般に, 20.13.1
このコンストラクタは,新しく生成された
20.13.2
このコンストラクタは,新しく生成された
実引数が負である場合, 20.13.3
このコンストラクタは,新しく生成された 20.13.4
新しい
実装上の助言。
このメソッドは,新しい
Object(20.1.2)の 20.13.5
このメソッドは,この 20.13.6
この 20.13.7
この 20.13.8
この文字列バッファは,実引数で指定された長さの新しい文字列を表現するように変更される。
kが古い文字列の長さより小さい場合,負でないすべてのインデクス kについて,新しい文字列のインデクスkにある文字は,古い文字列のインデクスk にある文字と同じであるものとする。
そうでなければ,新しい文字列のインデクスk にある文字は,null文字
実引数が負である場合, 20.13.9
文字列バッファによって現在表現されている文字列の,実引数
実引数 20.13.10
文字列バッファは,位置
実引数 20.13.11
この
そうでなければ,次のいずれかが成り立つ場合,
20.13.12
実引数が,あたかも 20.13.13
実引数
ここで,nを, 20.13.14
配列実引数の文字が,順にこの文字列バッファに追加され,この文字列バッファの長さは,実引数の長さの分だけ増加する。
最初に,メソッド
結果としての効果は,あたかも,メソッド 20.13.15
インデクス
結果としての効果は,あたかも,実引数を三つ取るメソッド 20.13.16
実引数を,あたかも,メソッド 20.13.17
実引数を,この文字列バッファの内容に追加し,この文字列バッファの長さを1だけ増加させる。
最初に,メソッド
結果としての効果は,あたかも,実引数をメソッド 20.13.18
実引数を,あたかも,メソッド 20.13.19
実引数を,あたかも,メソッド 20.13.20
実引数を,あたかも,メソッド 20.13.21
実引数を,あたかも,メソッド 20.13.22
実引数を,あたかも,メソッド 20.13.23
新しい文字列内のインデクスkの位置にある文字は,次の文字と等しい。
20.13.24
配列実引数の文字が,その順に,この文字列バッファに挿入され,文字列バッファの長さは,実引数の長さの分だけ増加する。
最初に,メソッド
結果としての効果は,あたかも,実引数をメソッド
20.13.25
実引数を,あたかも,メソッド 20.13.26
実引数を,この文字列バッファの内容の,
結果としての効果は,あたかも,実引数をメソッド 20.13.27
実引数を,メソッド 20.13.28
実引数を,メソッド 20.13.29
実引数を,メソッド 20.13.30
実引数を,メソッド 20.13.31
この
ここで,nを,
すべての
配列クラス用の
クラスローダは,通常,セキュリティマネージャ(20.17)によって,セキュリティドメインを示すために使用される。
二つのクラスは,同じクラスローダによって定義されている場合にだけ,互いに“友好的”又は“関係する”と見なしてよい。
20.14.1
このコンストラクタは,すべての新しく生成されるクラスローダについて呼び出される。
クラス
このコンストラクタが行なうのは,セキュリティチェックが必ず行われるようにすることだけとする。
セキュリティマネージャが存在する場合,その 20.14.2
それ自体が抽象クラスではないすべての
loadClassが行なうのは,クラスの名前が与えられたときに,そのクラスの
多くの場合, 20.14.3
このメソッドは,クラスローダによって,新しいクラスを定義するために使われる。
配列
次のいずれかが成り立つ場合,
20.14.4
この(誤解を招くような名前の)メソッドは,クラスローダによって,クラスをリンク(12.3,20.14.4)するために使われる。
そうでなければ,クラスは,12.3で規定されているようにリンクされる。
20.14.5
このメソッドは,クラスローダによって,クラスローダをもたないクラスを検索するのに使われる。
検索されるクラスには,
クラスの
Processインスタンスの最後の参照がなくなると,
20.15.1
このメソッドは, 20.15.2
このメソッドは, 20.15.3
このメソッドは, 20.15.4
このメソッドは,必要な場合,この
現在のスレッドが待機中に別のスレッドから割り込まれた場合(20.20.31),待機が終了し, 20.15.5
この 20.15.6
この 20.16.1
このメソッドは,現在の 20.16.2
まず,セキュリティマネージャが存在する場合,その
このメソッドは,現在の実行中のJava仮想計算機を終了させる。実引数は,状態コードとして使われる。慣例として,ゼロ以外の状況コードは,異常終了を示す。
クラス 20.16.3
実引数 20.16.4
実引数
このメソッドは,文字列
20.16.5
20.16.6
まず,セキュリティマネージャが存在する場合,
このメソッドは,コマンドラインのトークンを表現する文字列配列 20.16.7
現在存在しているオブジェクト及び将来生成されるオブジェクトに対して,現在使用可能なメモリの総量をバイト単位で返す。
このメソッドから返される値は,ホスト環境に依存して,時間が経つと変化することがある。
ある型のオブジェクトを保持するのに必要なメモリ量は,実装によって異なる。
20.16.8
将来生成されるオブジェクトに,現在使用できるメモリの総量の近似値を,バイト単位で返す。
この値は,必ず 20.16.9
このメソッドを呼び出すと,破棄されたオブジェクトが現在占有しているメモリを,即座に再利用できるように,破棄されたオブジェクトの回収が試みられる。
メソッドの呼出しから制御が戻った時点で,Java仮想計算機は,すべての破棄されたオブジェクトを可能な限り回収する努力をしている(
Javaランタイムシステムでは,
クラス 20.16.10
このメソッドを呼び出すと,Java仮想計算機は,破棄されていると判定されているが,
Javaランタイムシステムでは,
クラス 20.16.11
実引数に
実引数に 20.16.12
実引数に
実引数に 20.16.13
まず,セキュリティマネージャが存在する場合,その
これは,メソッド
クラス 20.16.14
まず,セキュリティマネージャが存在する場合,その
ネイティブコードで記述されたファイルが,ローカルのファイルシステムでライブラリファイルが格納されている場所からロードされる。
このプロセスの細部は,処理系によって異なる。
クラス 20.16.15
このメソッドは, 20.16.16
このメソッドは,
クラス 20.17.1
通常,このフィールドには,セキュリティチェックの進行中,必ず 20.17.2
このコンストラクタは,セキュリティマネージャを生成する前に,セキュリティマネージャが既にインストール(20.18.5)されているかどうか確認する。
インストールされている場合,別のセキュリティマネージャの生成は,禁止されているので, 20.17.3
このセキュリティマネージャ用のユティリティメソッドは,現在のスレッドの実行スタックを取得し,スタックフレームごとに一つの要素をもつ配列を返す。インデクスが 20.17.4
このセキュリティマネージャ用のユティリティメソッドは,現在のスレッドの実行スタックを検索し,実行がまだ終了していない, 20.17.5
このセキュリティマネージャ用のユティリティメソッドは,現在のスレッドの実行スタックを検索し,実行がまだ終了していない, 20.17.6
このセキュリティマネージャ用のユティリティメソッドは,現在のスレッドの実行スタックを検索し,実行がまだ終了していない,クラスローダ(20.14)によって生成されたクラスをもつメソッドのうち,最後に呼び出されたものを探し出す。
該当するメソッドが見つかると,オブジェクト 20.17.7
このセキュリティマネージャ用のユティリティメソッドは,現在のスレッドの実行スタックを検索し,実行がまだ終了していない,クラスローダ(20.14)によって生成されたクラスをもつメソッドのうち,最後に呼び出されたものを探し出す。
該当するメソッドが見つかると,スタックの一番上からの距離を,負でない整数として返す。
そうでなければ, 20.17.8
このセキュリティマネージャ用のユティリティメソッドは,現在のスレッドの実行スタックを検索し,実行がまだ終了していない,クラスローダ(20.14)によって生成されたクラスをもつメソッドのうち,最後に呼び出されたものを探し出す。
該当するメソッドが見つかると, 20.17.9
20.17.10
このメソッドは,クラスローダの生成が禁止されている場合,
このメソッドは,現在のセキュリティマネージャ(20.18.4)のために,クラス
クラス 20.17.11
このメソッドは,スレッド
このメソッドは,現在のセキュリティマネージャ(20.18.4)のために,クラス
クラス 20.17.12
このメソッドは,スレッドグループ
このメソッドは,現在のセキュリティマネージャ(20.18.4)のために,クラス
クラス 20.17.13
このメソッドは,実行中のJava仮想計算機を終了させる処理が禁止されている場合,
このメソッドは,現在のセキュリティマネージャ(20.18.4)のために,クラス
クラス 20.17.14
このメソッドは,
このメソッドは,現在のセキュリティマネージャ(20.18.4)のために,クラス
クラス 20.17.15
このメソッドは,システム属性データ構造の取得や設定が禁止されている場合,
このメソッドは,現在のセキュリティマネージャ(20.18.4)のために,クラス
クラス 20.17.16
このメソッドは,
このメソッドは′サ在のセキュリティマネージャ(20.18.4)のために,クラス
クラス 20.17.17
このメソッドは,指定されたライブラリコードファイルの動的リンクが禁止されている場合,
このメソッドは,現在のセキュリティマネージャ(20.18.4)のために,
クラス
クラス 20.17.18
このメソッドは,指定されたファイル記述子を使用した入力ストリームの生成が禁止されている場合,
このメソッドは,現在のセキュリティマネージャ(20.18.4)のために,
クラス 20.17.19
このメソッドは,指定されたファイルやディレクトリの読み取り,対応するファイルシステム情報の検査,又はその存在の有無を確認することが禁止されている場合,
このメソッドは,現在のセキュリティマネージャ(20.18.4)のために,
クラス 20.17.20
このメソッドは,指定されたファイル記述子を使用した出力ストリームの生成が禁止されている場合,
このメソッドは,現在のセキュリティマネージャ(20.18.4)のために,
クラス 20.17.21
このメソッドは,指定されたファイルやディレクトリの書き込み,変更,生成(出力ファイルの場合),又は名前の変更が禁止されている場合,
このメソッドは,現在のセキュリティマネージャ(20.18.4)のために,
クラス 20.17.22
このメソッドは,指定されたファイルの削除が禁止されている場合,
このメソッドは,現在のセキュリティマネージャ(20.18.4)のために,クラス
クラス 20.17.23
このメソッドは,指定されたネットワーク
このメソッドは,現在のセキュリティマネージャ(20.18.4)のために,
クラス
クラス 20.17.24
このメソッドは,指定されたローカルネットワークポート
このメソッドは,現在のセキュリティマネージャ(20.18.4)のために,
クラス 20.17.25
このメソッドは,指定されたネットワーク
このメソッドは,現在のセキュリティマネージャ(20.18.4)のために,クラス
クラス 20.17.26
このメソッドは,ソケット,サーバーソケット,URL,又はURL接続用の“ファクトリ”のインストールが禁止されている場合,
このメソッドは,セキュリティマネージャ(20.18.4)のために,次のメソッドで呼び出される。
クラス 20.17.27
このメソッドは,トップレベルウィンドウの生成が禁止されている場合,
このメソッドは,現在のセキュリティマネージャ(20.18.4)のために,クラス
クラス 20.17.28
このメソッドは,現在のアプレットが実引数で指定されたパッケージにアクセスすることが禁止されている場合,
クラス 20.17.29
このメソッドは,現在のアプレットが実引数で指定されたパッケージ内のクラス(又はインタフェース)を定義することが禁止されている場合,
クラス 20.18.1
この変数の初期値は,“標準”入力ストリームとする。このストリームは,初めから開いており,入力データを供給できる状態になっている。
通常,このストリームは,ホスト環境又はユーザが指定するキーボード入力又はその他の入力源に対応している。
このフィールドは, 20.18.2
この変数の初期値は,“標準”出力ストリームとする。
このストリームは,初めから開いており,出力データを受け取ることができる状態になっている。
通常,このストリームは,ホスト環境又はユーザが指定するディスプレイ出力又はその他の出力先に対応している。
このフィールドは,
簡単なJavaアプリケーションでは,1行のデータを出力するには,次のように記述する。
20.18.3
この変数の初期値は,“標準”エラー出力ストリームとする。このストリームは,初めから開いており,出力データを受け取ることができる状態になっている。
通常,このストリームは,ホスト環境又はユーザが指定するディスプレイ出力又はその他の出力先に対応している。
慣例として,この出力ストリームは,エラーメッセージ又はその他の情報など,ユーザの注意を即座に喚起する必要のある情報を表示するために使用する。
例え,主標準出力ストリーム,変数 20.18.4
現在実行中のJavaシステムに対してセキュリティマネージャが既に設定されている場合,そのセキュリティマネージャへの参照を返す。
そうでなければ, 20.18.5
現在実行中のJavaシステムに対してセキュリティマネージャが既に設定されている場合, 20.18.6
このメソッドは,現在の時刻と“エポック”と呼ばれる基準時刻 1970年1月1日 00:00:00 GMT との差(ミリ秒単位)を返す。
“コンピュータ上の時刻”と UTC(協定世界時:Coordinated Universal Time)の間に生じることがあるわずかなずれについては,クラス 20.18.7
セキュリティマネージャが存在する場合,最初に,
メソッド
20.18.8
セキュリティマネージャが存在する場合,最初に,
このメソッドは,実引数の属性オブジェクトを メソッド 20.18.9
セキュリティマネージャが存在する場合,最初に,
現在のシステム属性の集合が存在しない場合,
このメソッドは,指定された文字列 20.18.10
セキュリティマネージャが存在する場合,最初に,
現在のシステム属性の集合が存在しない場合,
指定された文字列 20.18.11
このメソッドは,現在実行中のJava仮想計算機を終了させる。
実引数は,状態コードとして使われる。
慣例として,ゼロ以外の状態コードは,異常終了を示す。
20.18.12
このメソッドを呼び出すと,破棄されたオブジェクトが現在占有しているメモリを即座に再利用できるように,破棄されたオブジェクトの回収が試みられる。
メソッド呼出しから制御が戻った時点では,すべての破棄されたオブジェクトが可能な限り回収する努力がなされている。
20.18.13
このメソッドを呼び出すと,Java仮想計算機では,破棄されたがその
20.18.14
このメソッドは,ローカルファイルシステムから指定されたファイル名をもつコードファイルをロードする。
20.18.15
このメソッドは,ローカルファイルシステムから指定されたライブラリ名をもつライブラリコードファイルをロードする。
20.18.16
実引数
そうでなければ,次のいずれかが成り立つ場合,
20.19.1
次のメソッドの規定では,“現在のスレッド”,“そのThread”,及び“そのスレッド”を区別することが重要である。
“現在のスレッド”とは,そのメソッドを実行中のスレッドのこととする。
“その
有効なスレッドは,一時停止(suspended) 及び 再開(resumed)することができる。
一時停止したスレッドは,有効と見なされるが,何も処理を実行せず,先の処理に進まず,仮想計算機の命令を何も実行しない。
スレッドの再開は,スレッドをアクティブな実行状態に復元する。
スレッドが一時停止するのは,それ自身又は他のスレッドが,そのスレッドを表現する
すべてのスレッドは,優先順位 (priority)をもつ。
処理する資源が競合する場合,通常は,優先順位の高いスレッドが,優先順位の低いスレッドに優先して実行される。
ただし,そのような優先順位は,最高順位のスレッドが常に実行中であることを保証しない,したがって,スレッドの優先順位を使って相互の排他制御を実装することは出来ない。
あるスレッドで実行されているコードが
各スレッドは,デーモン(daemon)として扱うこも,扱わないこともできる。
あるスレッドで実行中のコードがThreadオブジェクトを新しく生成したとき,新しく生成されるスレッドは,それを生成したスレッドがデーモンである場合にだけ,デーモンスレッドになる。
しかし,スレッドTをデーモンとして扱うかどうかは,そのスレッドがアクティブになる前に,他のスレッドがスレッドT を表す
Java仮想計算機を起動すると,通常,一つのデーモンではないスレッドが存在する。
それは,一般的には,ある指定されたクラスのメソッド
スレッドを新しく生成するには,二つの方法がある。
一つは,あるクラスを
まだ停止されていないすべてのスレッドは,あるスレッドグループ(20.21)に属している。
スレッドは,いつでも,それ自身のスレッドグループの中に,新しいスレッドを生成できる。
別のスレッドグループの中にスレッドを生成するためには,そのスレッドグループの 20.20.1
このフィールドの定数値は,スレッドに指定可能な最小の優先順位である 20.20.2
このフィールドの定数値は,スレッドに指定可能な最大の優先順位である 20.20.3
このフィールドの定数値は,デーモンでないスレッドに指定可能な通常の優先順位である 20.20.4
このコンストラクタは,新しく生成された
このコンストラクタは,明示的なコンストラクタ呼出し 20.20.5
このコンストラクタは,新しく生成された
このコンストラクタは,明示的なコンストラクタ呼出し 20.20.6
このコンストラクタは,新しく生成された
このコンストラクタは,明示的なコンストラクタ呼出し 20.20.7
このコンストラクタは,新しく生成された
このコンストラクタは,明示的なコンストラクタ呼出し 20.20.8
まず,このコンストラクタは,
このコンストラクタは,新しく生成された
このコンストラクタは,明示的なコンストラクタ呼出し 20.20.9
まず,このコンストラクタは,
このコンストラクタは,新しく生成された
このコンストラクタは,明示的なコンストラクタ呼出し 20.20.10
まず,このコンストラクタは,
このコンストラクタは,新しく生成された
新しく生成されたスレッドの優先順位は,それを生成するスレッド---つまり現在実行中のスレッド---と同じ優先順位とする。
メソッド
新しく生成されたスレッドは,それを生成するスレッドがデーモンである場合にだけ,初期設定でデーモンスレッドとして設定される。
メソッド 20.20.11
このメソッドは, 20.20.12
セキュリティマネージャが存在していれば,その
このメソッドは,実引数を取らない 20.20.13
このメソッドの一般的な役割は,そのスレッドが実行するように意図された動作を実行することである。
クラス 20.20.14
このメソッドを呼び出すことで,このスレッドを開始する。
このスレッドは,この 20.20.15
まず,この
このメソッドは,このスレッドが何を実行しているかにかかわらずそれを異常終了させ,例外として
まだ開始していないスレッドを終了させることもできる。
この場合,そのスレッドは,将来開始された時点で,直ちに終了する。
ユーザコードでは,特別なクリーンアップ処理が必要でない限り, 20.20.16
まず,この
実引数
このメソッドは,このスレッドが何を実行しているかにかかわらずそれを異常終了させ,例外として
まだ開始していないスレッドを終了させることもできる。この場合,そのスレッドは,開始された時点で,直ちに終了する。
20.20.17
まず,この
このメソッドは,このスレッドが有効(20.20.26)であれば,それを一時停止し,このスレッドが再開されるまで,処理を先に進ませない。
既に一時停止状態にあるスレッドに対してこのメソッドを実行することもできる。
この場合,スレッドは,一時停止したままになる。一時停止は,加算されない。
たとえスレッドを複数回一時停止しても,1回だけ 20.20.18
まず,この
このメソッドは,このスレッドが有効(20.20.26)だが一時停止している場合,それを再開し,実行を続行させる。
一時停止していないスレッド又はすでに再開されているスレッドにこのメソッドを実行することもできる。
この場合,実行が続行される。
再開は,加算されない。
たとえスレッドを複数回再開しても,1回だけ 20.20.19
この 20.20.20
まず,この
この 20.20.21
このメソッドは,このスレッドが有効である場合,このスレッドが属しているスレッドグループを表す 20.20.22 20.20.23
まず,この
実引数
そうでなければ,この 20.20.24
The result is 20.20.25
まず,この
このスレッドが有効であれば, 20.20.26
このメソッドは,このスレッドが有効である(開始され,まだ消滅していない)場合にだけ, 20.20.27
このメソッドは,このスレッドに対して現在アクティブになっているJava仮想計算機のスタックフレーム数を返す。
20.20.28
このメソッドは,(クラス
現在のスレッドが待機中に,別のスレッドから割り込まれる(20.20.31)と待機を終了し, 20.20.29
このメソッドは,(クラス
実時間は,ミリ秒単位で計測され,
現在のスレッドが待機中に,別のスレッドから割り込まれる(20.20.31)と待機を終了し, 20.20.30
このメソッドは,(クラス
現在のスレッドが待機中に,別のスレッドから割り込まれる(20.20.31)と待機を終了し, 20.20.31
このスレッドに対して割り込みを要求する。
ただし,このスレッドは,必ずしも即座に割り込みに反応する必要はない。
このスレッドが待機中であれば,それを再開し,
[このメソッドは,バージョン1.1のJava Versionで導入される予定である。]
20.20.32
このメソッドは,このスレッドに対して割り込み要求が登録されている場合,またその場合にだけ,
[このメソッドは,バージョン1.1のJava Versionで導入される予定である。]
20.20.33
現在のスレッドに対して割り込み要求が登録されている場合にだけ,
[このメソッドは,バージョン1.1のJava Versionで導入される予定である。]
20.20.34 20.20.35
このメソッドは,現在のスレッドが属しているスレッドグループ内にあるアクティブなスレッドの数を返す。
これには,そのスレッドグループのサブグループ内のスレッドも含まれる。
これは,次の式の値と等しくなる。
20.20.36
現在のスレッドが属しているスレッドグループ内にあるアクティブなスレッド,そのスレッドグループのサブグループ内にあるスレッドを含む,を数え上げ,それらの
[このメソッドは,バージョン1.1のJavaが提供された後は,使用するべきでない。代わりに,次の式を使用する。
20.20.37
このメソッドは,現在のスレッドのスタックダンプを出力するためのユティリティメソッドとする。
これは,次の式の値と等しくなる。
20.20.38
このメソッドは,現在実行しているスレッドの実行権を他のスレッドに譲る,スレッドスケジューラが,別の実行可能なスレッドを選択して実行できるようにする。
20.20.39
このメソッドは,現在実行しているスレッドの実行権を他のスレッドに譲り,指定された実時間が経過するまでそのスレッドを実行しないようにする。
実時間は,ミリ秒単位で計測され,
現在のスレッドが待機中に,別のスレッドから割り込まれる(20.20.31)と待機を終了し, 20.20.40
このメソッドは,現在実行しているスレッドの実行権を他のスレッドに譲り,指定された実時間が経過するまでそのスレッドを実行されないようにする。
現在のスレッドが待機中に,別のスレッドから割り込まれる(20.20.31)と待機を終了し, 20.20.41
まず,この
その後,クリーンアップをせずに,このスレッドを破棄する。
スレッドがロックをかけたモニタは,すべてロックされたままとする。
[このメソッドは,初期のバージョンのJavaから1.1まで実装されていない。]
スレッドグループは,スレッドを管理し,セキュリティ上の境界を設定する手段を提供する。
例えば,スレッドは,それ自身が属しているスレッドグループ内に新しいスレッドを常に生成できるが,しかし,別のスレッドグループに新しいスレッドを生成するには,スレッドグループを生成するときと同じく,セキュリティマネージャ(20.17)の承認が必要である。
各スレッドグループは,デーモンとしてマークすることも,しないこともできる。
新しいスレッドグループオブジェクトが生成されると,そのスレッドグループが属するるスレッドグループがデーモンである場合にだけ,そのスレッドグループは,デーモンとしてマークされる。
しかし,スレッドグループ G のデーモン性の設定は,Gを表現するスレッドグループオブジェクトの
すべてのスレッドグループは,識別のために使用する
スレッドグループを生成するには,親スレッドグループとなるスレッドグループの 20.21.1
まず,現在のスレッドが属しているスレッド グループの
このコンストラクタは,新しく生成された
このコンストラクタは,明示的なコンストラクタ呼出し 20.21.2
まず,現在のスレッドが属しているスレッドグループの
このコンストラクタは,新しく生成された
新しく生成されたスレッドグループの最高優先順位は,
新しく生成したスレッドグループは, 20.21.3
このメソッドは, 20.21.4
セキュリティマネージャが存在する場合,その
このメソッドは,メソッド 20.21.5
この 20.21.6
このメソッドは,このスレッドグループが属しているスレッドグループを表す 20.21.7
このメソッドは,このスレッドグループが
(このメソッドの名前は,適切とは言えない。より正確には,難しい言い方で読みにくいかもしれないが,parentOfReflexiveTransitiveClosure(再帰的推移閉包の親)とでもすべきである。)
20.21.8
まず,現在のスレッドが属しているスレッドグループの
この 20.21.9
まず,この
このスレッドグループ及びそのすべてのサブグループに属しているすべてのスレッドを一時停止する。
より正確には,この 20.21.10
まず,この
このスレッドグループ及びそのすべてのサブグループに属しているすべてのスレッドを再開する。
より正確には,この 20.21.11
まず,この
このスレッドグループは,破棄される。
既に破棄されている場合又は直接このグループに属しているスレッドが存在する場合,
デーモンスレッドグループとして現在設定されているスレッドグループは,次の両方の条件が成り立つ場合,自動的に破棄される。
20.21.12
この 20.21.13
まず,この
実引数
そうでなければ,この 20.21.14
このメソッドは,現在このスレッドグループがデーモンスレッドグループとして設定されている場合にだけ, 20.21.15
まず,この
このスレッドグループを,実引数が 20.21.16
このメソッドは,このスレッドグループに直接属しているスレッドの数を返す。
20.21.17
このメソッドは,このスレッドグループ又はそのいずれかのサブグループに直接属している,スレッドの数を返す。
20.21.18
このメソッドは,このスレッドグループに直接属している,スレッドグループの数を返す。
20.21.19
このメソッドは,このスレッドグループ又はそのすべてのサブグループに直接属している,スレッドグループの数を返す。
20.21.20
このメソッドは,配列を新しく生成し,このスレッドグループに直接属している,すべてのスレッドの 20.21.21
このメソッドは,配列を新しく生成し,このスレッドグループ又はそのすべてのサブグループに直接属している,すべてのスレッドの 20.21.22
このメソッドは,配列を新しく生成し,このスレッドグループに直接属している,すべてのスレッドの 20.21.23
このメソッドは,配列を新しく生成し,このスレッドグループ又はそのいずれかのサブグループに直接属している,すべてのスレッドの 20.21.24
[このメソッドは,Java Version 1.1が提供された後では,使用するべきではない。代わりに,これと同等のメソッド 20.21.25
[このメソッドは,Java Version 1.1が提供された後では使用するべきではない。代わりに,これと同等のメソッド 20.21.26
[このメソッドは,Java Version 1.1が提供された後では,使用するべきではない。代わりに,これと同等のメソッド 20.21.27
[このメソッドは,Java Version 1.1が提供された後では,使用するべきではない。代わりに,これと同等のメソッド 20.21.28
[このメソッドは,Java Version 1.1が提供された後では,使用するべきではない。代わりに,これと同等のメソッド 20.21.29
[このメソッドは,Java Version 1.1が提供された後では,使用するべきではない。代わりに,これと同等のメソッド 20.21.30
このメソッドは,このスレッドグループの詳細な情報を出力ストリーム
出力は,行の並びになる。
各行は,(字下げ用の)空白の後ろに,
1行目は,このスレッドグループの 20.21.31
メソッド
クラス
次のリストは,Java言語のパッケージ
20.22.1
このコンストラクタは, 20.22.2
このコンストラクタは,新しく生成した 20.22.3
この
この 20.22.4
この 20.22.5
このメソッドは,この 20.22.6
このメソッドは, 20.23.1
このコンストラクタは, 20.23.2
このコンストラクタは,新しく生成された 20.23.3
このコンストラクタは,新しく生成された 20.23.4
この
待機の後,スレッド Tは,このオブジェクトの待機集合から削除され,スレッドスケジューリングが開始される。その後に,通常通り,他のスレッドとオブジェクトに対する同期化の権利を競合する。このオブジェクトの制御権を取得すると,そのオブジェクトに対するすべての同期化の要求が以前の状態,つまりメソッド notify
を呼び出し,スレッド T
がたまたま再開されるスレッドとして選択された。
notifyAll
を呼び出した。
millis で指定する。ただし,millisがゼロの場合は実時間が考慮されず,スレッドは通知されるまで待機し続ける。
wait が呼び出されたときの状態に復元する。この後,スレッド T はメソッド waitの呼び出しから戻る。したがって,メソッド waitから戻った際,オブジェクトとスレッド T の同期化の状態は,メソッド wait が呼び出されたときと同じになる。
InterruptedException が投げられる。この例外は,前述したように,このオブジェクトのロック状態が復元されるまで投げられない。
waitは,現在のスレッドをこのオブジェクトの待機集合に入れる時に,このオブジェクトのロックだけを解除する。現在のスレッドが同期化の対象にしている他のオブジェクトは,スレッドが待機している間,ロックされたままとする。
public final void
wait(long millis, int nanos)
throws
IllegalMonitorStateException,
InterruptedExceptionnotify (20.1.9)又は,メソッド notifyAll
(20.1.10)を呼び出すか,別のスレッドが現在のスレッドに割り込むか,指定された実時間が経過するまで,現在のスレッドを待機させる。
ナノ秒単位で表す点を除き,このメソッドの動作は,パラメータを 一つ取るメソッド 1000000*millis+nanos
wait (20.1.7)同じとする。特に,wait(0, 0) は wait(0) と同じとする。
public final void
notify()
throws
IllegalMonitorStateExceptionnotifyは,現在のスレッドがこのオブジェクトに対して既に同期化されている場合しか,呼び出すことができない。現在のスレッドがこのオブジェクトのロックを所有していない場合,IllegalMonitorStateExceptionが投げられる。
public final void
notifyAll()
throws
IllegalMonitorStateExceptionnotifyAllは,現在のスレッドがこのオブジェクトに対して既に同期化されている場合にだけ,呼び出すことができる。現在のスレッドがこのオブジェクトのロックを所有していない場合,IllegalMonitorStateExceptionが投げられる。
protected void
finalize() throws Throwablefinalize (12.7)
は,Java 仮想計算機が,まだ消滅していないスレッドがこのオブジェクトにアクセスできる方法がまったくないと判断した場合に呼び出される。ただし,終了できる状態にある他のオブジェクトやクラスを終了した結果,このオブジェクトにアクセスできる方法がなくなる場合は除く。メソッド finalize は,このオブジェクトを再び他のスレッドが利用できるようにするなど,あらゆる動作を実行できる。しかし,finalizeの通常の動作は,オブジェクトが完全に破棄される前にその後始末を行うことである。たとえば,入出力接続を表すオブジェクトに対して呼び出される
メソッド finalizeは,オブジェクトが永久に破棄される前に,明示的に入出力トランザクションを実行して接続を切断する。
Object の メソッド finalizeは,特別な動作は何も行わない。単に,正常終了する。Objectのサブクラスは,この定義を上書きすることができる。
finalizeを呼び出すのか保証していない。ただし,finalizeが呼び出された際,それを呼び出したスレッドがユーザに見える同期化ロックを保持しないことは保証されている。捕捉されない例外がメソッド finalize によって投げられると,その例外は無視され,そのオブジェクトのファイナライズは終了する。
finalizeが呼び出された後,Java仮想計算機がまだ消滅していないスレッドがこのオブジェクトにアクセスできる方法がないと再度判断するまでは,何も実行されない。終了できる状態にあり,オブジェクトを破棄できる状態にある他のオブジェクトやクラスが行う可能性のある動作も実行されない。
finalize を
2回以上呼び出すことはできない。
20.2 インタフェース
インタフェースjava.lang.Cloneable Cloneableは メソッド clone
(20.1.5)を使用又は上書きするクラスによって実装される。
public interface
インタフェースCloneable {
}
Cloneableは,メソッドを宣言しない。
20.3 クラス
クラス java.lang.ClassClassのインスタンスは,実行中のJavaプログラムが操作できる方法でクラスとインタフェースを表現する。すべての配列は,要素型と次元が同じ他のすべての配列によって共有されるClassオブジェクト で表現されるクラスに属する。
Classには,public宣言されたコンストラクタはない。Java仮想計算機は,クラスがロードされると自動的にClassオブジェクトを生成する。このようなオブジェクトはユーザプログラムでは生成できない。
public final class
Class {
public String toString();
public String getName();
public boolean isInterface();
public Class getSuperclass();
public Class[] getInterfaces();
public Object newInstance()
throws InstantiationException, IllegalAccessException;
public ClassLoader getClassLoader();
public static Class forName(String className)
throws ClassNotFoundException;
}
public String
toString()Classオブジェクト が表現するのは,宣言クラス又は配列クラス,class という内容の文字列,スペース,及びメソッド getName (20.3.2)の返すクラス名とする。このClassオブジェクトがインタフェースを表現する場合,interfaceという内容の文字列,スペース,及びメソッドgetName が返すインタフェースの名前とする。
(isInterface() ? "interface " : "class ") + getName()
このメソッドは,Objectの メソッド toString (20.1.2)を上書きする。
public String
getName()Classオブジェクト によって表されるクラス又はインタフェースの完全限定名が String として返される。次の例は,"java.lang.Object" を返す。
例
new Object().getClass().getName()
["と,Javaシグネチャ形式で表わされた要素型の名前から構成される。例えば,次の例は "[Ljava.lang.Object;" を返す。
また,次の例は,(new Object[3]).getClass().getName()"[[[[[[[I" を返す。
要素型の名前は,次のように符号化される。
(new int[3][4][5][6][7][8][9]).getClass().getName()
B byte
C char
D double
F float
I int
J long
Lclassname; class or interface
S short
Z boolean
クラス名又は インタフェース名(classname) は,前述の例で示したように完全限定名で記述される。型記述子の詳細については,Java Virtual Machine Specification のクラスファイル形式の章を参照のこと。
public boolean
isInterface()Classオブジェクト がインタフェースを表現する場合,true を返す。このClassオブジェクトがクラスを表す場合,false を返す。
public Class
getSuperclass()Classオブジェクト が,クラス Object 以外のクラスを表現する場合,そのクラスが属するスーパクラスを表現する Class を返す。このClassオブジェクト が,クラス Objectを表現するものである場合,又は,インタフェースを表現する場合,nullを返す。このClassオブジェクト が配列クラスを表現する場合,クラス Object を表現する Class を返す。
public Class[]
getInterfaces()Classオブジェクトがクラスを表現する場合,この配列は,そのクラスによって直接実装されるすべてのインタフェースを表現するオブジェクトを含む。配列中のインタフェースオブジェクトの順序は,Classオブジェクト によって表現されるクラス宣言のimplements節でのインタフェースの名前の順序と対応する。例えば,次のクラス宣言を例に挙げる。
class Shimmer implements FloorWax, DessertTopping {
... }
ここで,s の値が Shimmer のインスタンスであると考える。すると,
s.getClass().getInterfaces()[0]
is the Class object that represents interface
FloorWax; and the value of:
s.getClass().getInterfaces()[1]
この式の値は,インタフェース FloorWax を表現するオブジェクト
Class とする。また, s.getClass().getInterfaces()[1]この式の値は,インタフェース DessertTopping を表現するClassオブジェクトとする。
Classオブジェクトがインタフェースを表現する場合,配列は,そのインタフェースによって直接継承されるすべてのインタフェース---つまり,インタフェースの直接のスーパインタフェース---を表現するオブジェクトを含む。配列中のインタフェースオブジェクトの順序は,Classオブジェクト によって表現されるインタフェース宣言の extends 節でのインタフェース名の順序と対応する。
public Object
newInstance()
throws InstantiationException,
IllegalAccessExceptionClassオブジェクトによって表現されるクラスのインスタンスを新しく作成し,それを返す。これは,空の実引数リストである時のクラスインスタンス作成式 (15.8)と同じ動作をする。例えば,t をクラス Thread を表すClassオブジェクト
とすると,t.newInstance()は,new Thread()と同じとする。このようなクラスインスタンス作成式の評価が突然終了すると,メソッド newInstance
の呼び出しも同じ理由により突然終了する。InstantiationException
の詳細は,11.5.1.2も参照のこと。
public ClassLoader
getClassLoader()null を返す。
public static Class
forName(String className)
throws
ClassNotFoundExceptionClassオブジェクト への参照を返す。失敗すると,ClassNotFoundException
が投げられる。
20.4 クラス
型 java.lang.BooleanBoolean のオブジェクトは,型 boolean のプリミティブ値を表現する。
public final class
Boolean {
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
public Boolean(boolean value);
public Boolean(String s);
public String toString();
public boolean equals(Object obj);
public int hashCode();
public boolean booleanValue();
public static Boolean valueOf(String s);
public static boolean getBoolean(String name);
}
public static final
Boolean
TRUE = new Boolean(true);true に対応するBooleanオブジェクト とする。
public static final
Boolean
FALSE = new Boolean(false);false に対応するBooleanオブジェクト とする。
public
Boolean(boolean value)Booleanオブジェクト を新しく作成する。
public
Boolean(String s)Booleanオブジェクト を新しく作成し,実引数が null ではなく,大文字小文字の区別なしで "true" と一致する場合に,またその場合にだけ,それを true で初期化する。
Boolean("True") は,true を表すBooleanオブジェクト を新しく作成する。
Boolean ("yes")は,false を表すBooleanオブジェクト を新しく作成する。
public String
toString()Booleanオブジェクト が true を表現する場合,"true" と等しい文字列を返す。このBooleanオブジェクトが false を表現する場合,"false"
と等しい文字列を返す。
toString を上書きする。
public boolean
equals(Object obj)null でなく,それがこのBooleanオブジェクトと等しい boolean 値を表すBooleanオブジェクトである場合に,またその場合にだけ true が結果として返される。
equals (20.1.3)を上書きする。
public int
hashCode()Booleanオブジェクト が true を表現する場合,整数 1231 を返す。このBooleanオブジェクト が false を表現する場合,整数 1237 を返す。
hashCode(20.1.4)を上書きする。
public boolean
booleanValue()Booleanオブジェクト によって表現されるプリミティブな boolean 値を返す。
public static boolean
valueOf(String s)"true" と等しい場合,またその場合にだけ結果が true になる。
Boolean.valueOf("True") は true を返す。
Boolean.valueOf("yes") は false を返す。
public static boolean
getBoolean(String name)"true"と等しい場合,またその場合にだけ結果が true になる。
20.5 クラス
型 java.lang.CharacterCharacter のオブジェクトは 型 charのプリミティブな値を表現する。
public final class
クラス Character {
public static final char MIN_VALUE = '\u0000';
public static final char MAX_VALUE = '\uffff';
public static final int MIN_RADIX = 2;
public static final int MAX_RADIX = 36;
public Character(char value);
public String toString();
public boolean equals(Object obj);
public int hashCode();
public char charValue();
public static boolean isDefined(char ch);
public static boolean isLowerCase(char ch);
public static boolean isUpperCase(char ch);
public static boolean isTitleCase(char ch);
public static boolean isDigit(char ch);
public static boolean isLetter(char ch);
public static boolean isLetterOrDigit(char ch);
public static boolean isJavaLetter(char ch);
public static boolean isJavaLetterOrDigit(char ch);)
public static boolean isSpace(char ch);
public static char toLowerCase(char ch);
public static char toUpperCase(char ch);
public static char toTitleCase(char ch);
public static int digit(char ch, int radix);
public static char forDigit(int digit, int radix);
}
Character のメソッドの多くは,“Unicode属性テーブル”によって定義される。このテーブルは,定義済みのすべてのUnicode文字と,10進数字,大文字,小文字,及び対応するタイトルケースなどの属性を指定する。Java 1.1以前では,これらのメソッドは,ここで説明するようにUnicode 1.1.5に基づいたJavaコンパイラの内部メソッドである。これらのメソッドの最新バージョンは,これらのメソッドを組み込んでいないJavaシステム上で動作するJavaコンパイラで使用する。
ftp://unicode.org/pub/MappingTables/UnicodeData-1.1.5.txt
ただし,このファイルは若干のエラーを含んでいる。以下で“Unicode属性テーブル”に言及する場合は,このファイルを修正を加えたものを指す。
Unicode第2.0版では,これらの問題は訂正されていると予測される。
ftp://unicode.org/pub/MappingTables/UnicodeData-2.0.12.txt
Unicode に依存するメソッドに関する情報は,随時更新される予定になっている。
public static final char
MIN_VALUE = '\u0000';public static final char
MAX_VALUE = '\uffff';public static final int
MIN_RADIX = 2;Integer
(20.7) のメソッド digit
(20.5.23),メソッド
forDigit
(20.5.24),及びメソッドtoString
など基数に関係するメソッドの実引数 radix
として指定可能な最小値とする。
public static final int
MAX_RADIX = 36;Integer (20.7)のメソッド digit(20.5.23),メソッド forDigit
(20.5.24),及びメソッド
toString など基数に関係するメソッドの実引数 radix
として指定可能な最大値とする。
public
Character(char value)Character を作成する。
public String
toString()1 で,このCharacterオブジェクト の表すプリミティブ値 char を唯一の要素とする String を返す。
Object のメソッド toString (20.1.2)を上書きする。
public boolean
equals(Object obj)Characterオブジェクト と同じ char 値を持つCharacterオブジェクトである場合,またその場合にだけ結果が true になる。
equals を上書きする(20.1.3)。
public int
hashCode()Characterオブジェクト で表現される char
プリミティブの値が型 int にキャストされたものを返す。
hashCode(20.1.4)を上書きする。
public char
charValue()Characterオブジェクト で表現される char
プリミティブの値を返す。
public static boolean
isDefined(char ch)true
が結果として返される。
従って,前述したUnicode第1.1.5版では,定義済みUnicode文字のコードは,次に挙げる文字コードあるいは文字コード領域のリストに含まれている。
\u3040 より小さくなく,\u9FA5 より大きくない。
\uF900 より小さくなく,\uFA2D より大きくない。 0000-01F5, 01FA-0217, 0250-02A8, 02B0-02DE, 02E0-02E9, 0300-0345,
0360-0361, 0374-0375, 037A, 037E, 0384-038A, 038C, 038E-03A1, 03A3-03CE,
03D0-03D6, 03DA, 03DC, 03DE, 03E0, 03E2-03F3, 0401-040C, 040E-044F,
0451-045C, 045E-0486, 0490-04C4, 04C7-04C8, 04CB-04CC, 04D0-04EB,
04EE-04F5, 04F8-04F9, 0531-0556, 0559-055F, 0561-0587, 0589, 05B0-05B9,
05BB-05C3, 05D0-05EA, 05F0-05F4, 060C, 061B, 061F, 0621-063A, 0640-0652,
0660-066D, 0670-06B7, 06BA-06BE, 06C0-06CE, 06D0-06ED, 06F0-06F9,
0901-0903, 0905-0939, 093C-094D, 0950-0954, 0958-0970, 0981-0983,
0985-098C, 098F-0990, 0993-09A8, 09AA-09B0, 09B2, 09B6-09B9, 09BC,
09BE-09C4, 09C7-09C8, 09CB-09CD, 09D7, 09DC-09DD, 09DF-09E3, 09E6-09FA,
0A02, 0A05-0A0A, 0A0F-0A10, 0A13-0A28, 0A2A-0A30, 0A32-0A33, 0A35-0A36,
0A38-0A39, 0A3C, 0A3E-0A42, 0A47-0A48, 0A4B-0A4D, 0A59-0A5C, 0A5E,
0A66-0A74, 0A81-0A83, 0A85-0A8B, 0A8D, 0A8F-0A91, 0A93-0AA8, 0AAA-0AB0,
0AB2-0AB3, 0AB5-0AB9, 0ABC-0AC5, 0AC7-0AC9, 0ACB-0ACD, 0AD0, 0AE0,
0AE6-0AEF, 0B01-0B03, 0B05-0B0C, 0B0F-0B10, 0B13-0B28, 0B2A-0B30,
0B32-0B33, 0B36-0B39, 0B3C-0B43, 0B47-0B48, 0B4B-0B4D, 0B56-0B57,
0B5C-0B5D, 0B5F-0B61, 0B66-0B70, 0B82-0B83, 0B85-0B8A, 0B8E-0B90,
0B92-0B95, 0B99-0B9A, 0B9C, 0B9E-0B9F, 0BA3-0BA4, 0BA8-0BAA, 0BAE-0BB5,
0BB7-0BB9, 0BBE-0BC2, 0BC6-0BC8, 0BCA-0BCD, 0BD7, 0BE7-0BF2, 0C01-0C03,
0C05-0C0C, 0C0E-0C10, 0C12-0C28, 0C2A-0C33, 0C35-0C39, 0C3E-0C44,
0C46-0C48, 0C4A-0C4D, 0C55-0C56, 0C60-0C61, 0C66-0C6F, 0C82-0C83,
0C85-0C8C, 0C8E-0C90, 0C92-0CA8, 0CAA-0CB3, 0CB5-0CB9, 0CBE-0CC4,
0CC6-0CC8, 0CCA-0CCD, 0CD5-0CD6, 0CDE, 0CE0-0CE1, 0CE6-0CEF, 0D02-0D03,
0D05-0D0C, 0D0E-0D10, 0D12-0D28, 0D2A-0D39, 0D3E-0D43, 0D46-0D48,
0D4A-0D4D, 0D57, 0D60-0D61, 0D66-0D6F, 0E01-0E3A, 0E3F-0E5B, 0E81-0E82,
0E84, 0E87-0E88, 0E8A, 0E8D, 0E94-0E97, 0E99-0E9F, 0EA1-0EA3, 0EA5, 0EA7,
0EAA-0EAB, 0EAD-0EB9, 0EBB-0EBD, 0EC0-0EC4, 0EC6, 0EC8-0ECD, 0ED0-0ED9,
0EDC-0EDD, 10A0-10C5, 10D0-10F6, 10FB, 1100-1159, 115F-11A2, 11A8-11F9,
1E00-1E9A, 1EA0-1EF9, 1F00-1F15, 1F18-1F1D, 1F20-1F45, 1F48-1F4D,
1F50-1F57, 1F59, 1F5B, 1F5D, 1F5F-1F7D, 1F80-1FB4, 1FB6-1FC4, 1FC6-1FD3,
1FD6-1FDB, 1FDD-1FEF, 1FF2-1FF4, 1FF6-1FFE, 2000-202E, 2030-2046,
206A-2070, 2074-208E, 20A0-20AA, 20D0-20E1, 2100-2138, 2153-2182,
2190-21EA, 2200-22F1, 2300, 2302-237A, 2400-2424, 2440-244A, 2460-24EA,
2500-2595, 25A0-25EF, 2600-2613, 261A-266F, 2701-2704, 2706-2709,
270C-2727, 2729-274B, 274D, 274F-2752, 2756, 2758-275E, 2761-2767,
2776-2794, 2798-27AF, 27B1-27BE, 3000-3037, 303F, 3041-3094, 3099-309E,
30A1-30FE, 3105-312C, 3131-318E, 3190-319F, 3200-321C, 3220-3243,
3260-327B, 327F-32B0, 32C0-32CB, 32D0-32FE, 3300-3376, 337B-33DD,
33E0-33FE, 3400-9FA5, F900-FA2D, FB00-FB06, FB13-FB17, FB1E-FB36,
FB38-FB3C, FB3E, FB40-FB41, FB43-FB44, FB46-FBB1, FBD3-FD3F, FD50-FD8F,
FD92-FDC7, FDF0-FDFB, FE20-FE23, FE30-FE44, FE49-FE52, FE54-FE66,
FE68-FE6B, FE70-FE72, FE74, FE76-FEFC, FEFF, FF01-FF5E, FF61-FFBE,
FFC2-FFC7, FFCA-FFCF, FFD2-FFD7, FFDA-FFDC, FFE0-FFE6, FFE8-FFEE,
FFFD
public static boolean
isLowerCase(char ch)true が結果として返される。
従って,前述したUnicode第1.1.5版では,Unicode文字の小文字のコードは,次に挙げる文字コードあるいは文字コード領域のリストに含まれていることになる。
ch が,\u2000 から
\u2FFF までの範囲にない。
0061-007A, 00DF-00F6,
00F8-00FF, 0101-0137
(奇数だけ), 0138-0148 (偶数だけ),
0149-0177 (奇数だけ),
017A-017E (偶数だけ),
017F-0180, 0183, 0185,
0188, 018C-018D, 0192,
0195, 0199-019B, 019E,
01A1-01A5 (奇数だけ), 01A8,
01AB, 01AD, 01B0, 01B4,
01B6, 01B9-01BA, 01BD,
01C6, 01C9, 01CC-01DC
(偶数だけ), 01DD-01EF (奇数だけ),
01F0, 01F3, 01F5,
01FB-0217 (奇数だけ),
0250-0261, 0263-0269,
026B-0273, 0275,
0277-027F, 0282-028E,
0290-0293, 029A,
029D-029E, 02A0,
02A3-02A8, 0390,
03AC-03CE, 03D0-03D1,
03D5-03D6, 03E3-03EF
(奇数だけ), 03F0-03F1,
0430-044F, 0451-045C,
045E-045F, 0461-0481
(奇数だけ), 0491-04BF (奇数だけ),
04C2, 04C4, 04C8, 04CC,
04D1-04EB (奇数だけ),
04EF-04F5 (奇数だけ), 04F9,
0561-0587, 1E01-1E95
(奇数だけ), 1E96-1E9A,
1EA1-1EF9 (奇数だけ),
1F00-1F07, 1F10-1F15,
1F20-1F27, 1F30-1F37,
1F40-1F45, 1F50-1F57,
1F60-1F67, 1F70-1F7D,
1F80-1F87, 1F90-1F97,
1FA0-1FA7, 1FB0-1FB4,
1FB6-1FB7, 1FC2-1FC4,
1FC6-1FC7, 1FD0-1FD3,
1FD6-1FD7, 1FE0-1FE7,
1FF2-1FF4, 1FF6-1FF7,
FB00-FB06, FB13-FB17,
FF41-FF5A
abcdefghijklmnopqrstuvwxyz
[メソッド isLowerCase
の仕様は,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。20.5を参照のこと。]
public static boolean
isUpperCase(char ch)true
が結果として返される。
従って,前述したUnicode第1.1.5版では,Unicode文字の大文字のコードは,次に挙げる文字コードあるいは文字コード領域のリストに含まれていることになる。
ch が,\u2000 から \u2FFF までの範囲にない。
0041-005A, 00C0-00D6,
00D8-00DE, 0100-0136
(偶数だけ), 0139-0147 (奇数だけ),
014A-0178 (偶数だけ),
0179-017D (奇数だけ),
0181-0182, 0184, 0186,
0187, 0189-018B,
018E-0191, 0193-0194,
0196-0198, 019C-019D,
019F-01A0, 01A2, 01A4,
01A7, 01A9, 01AC, 01AE,
01AF, 01B1-01B3, 01B5,
01B7, 01B8, 01BC, 01C4,
01C7, 01CA, 01CD-01DB
(奇数だけ), 01DE-01EE (偶数だけ),
01F1, 01F4, 01FA-0216
(偶数だけ), 0386, 0388-038A,
038C, 038E, 038F,
0391-03A1, 03A3-03AB,
03E2-03EE (偶数だけ),
0401-040C, 040E-042F,
0460-0480 (偶数だけ),
0490-04BE (偶数だけ), 04C1,
04C3, 04C7, 04CB,
04D0-04EA (偶数だけ),
04EE-04F4 (偶数だけ), 04F8,
0531-0556, 10A0-10C5,
1E00-1E94 (偶数だけ),
1EA0-1EF8 (偶数だけ),
1F08-1F0F, 1F18-1F1D,
1F28-1F2F, 1F38-1F3F,
1F48-1F4D,
1F59-1F5F (奇数だけ),
1F68-1F6F, 1F88-1F8F,
1F98-1F9F, 1FA8-1FAF,
1FB8-1FBC, 1FC8-1FCC,
1FD8-1FDB, 1FE8-1FEC,
1FF8-1FFC, FF21-FF3A
ABCDEFGHIJKLMNOPQRSTUVWXYZ
[メソッド isUpperCase
の仕様は,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。
20.5を参照のこと。]
public static boolean
isTitleCase(char ch)true
が結果として返される。
\u01C7)という文字がある。これは,‘L’と‘J’という二つの文字が続いたように見えるが,1文字である。また,対応する小文字‘lj’(\u01C9)もある。これらの文字がUnicodeにあるのは,主に,セルビアなどで使われているキリルアルファベットから,例えばラテンアルファベットへの,一対一転記を可能にするためである。ここで,“LJUBINJE”という単語を考えてみるが(これは,おそらくキリル文字を転記したものであり,‘LJ’と‘NJ’がそれぞれ1文字であるので,8文字ではなく,6文字(six) である),書名の一部に使う場合には,大文字と小文字で書くことになっている。初めの文字を大文字にし,それ以外の文字を小文字にするという方法では,“LJubinje”となってしまい,具合が悪い。この解決策として,タイトルケース と呼ばれる三つめの形を使うことになった。‘LJ’のタイトルケースは‘Lj’(\u01C8)であり,‘NJ’のタイトルケースは‘Nj’とする。書名に出てくる単語の場合,可能であれば初めの文字をタイトルケースに変換し,そうでなければ大文字に変換する。その他の文字は,小文字に変換される。
isTitleCase に対して true を返す。
\u01C5 LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
\u01C8 LATIN CAPITAL LETTER L WITH SMALL LETTER J
\u01CB LATIN CAPITAL LETTER N WITH SMALL LETTER J
\u01F2 LATIN CAPITAL LETTER D WITH SMALL LETTER Z
[このメソッドは,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。20.5を参照のこと。]
public static boolean
isDigit(char ch)true
が結果として返される。
Unicode文字の最初の128文字のうち,次の10文字だけが数字であると見なされる。
0030-0039 ISO-Latin-1 (及びASCII) 数字 ('0'-'9')
0660-0669 アラビアインド数字
06F0-06F9 東方アラビアインド数字
0966-096F デーバナーガーリ数字
09E6-09EF ベンガル数字
0A66-0A6F グルムキ数字
0AE6-0AEF グジャラート数字
0B66-0B6F オーリヤ数字
0BE7-0BEF タミル数字 (9文字だけ。0はない)
0C66-0C6F テルグ数字
0CE6-0CEF カンナダ数字
0D66-0D6F マラヤラム数字
0E50-0E59 タイ数字
0ED0-0ED9 ラオ数字
FF10-FF19 全角数字
0123456789
[このメソッドは,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。20.5を参照のこと。]
public static boolean
isLetter(char ch)true
が結果として返される。
public static boolean
isLetterOrDigit(char ch)true を結果として返す。
したがって,前述した修正を加えたUnicode1.1.5では,Unicode文字及び数字は,以下に挙げたコード及びコード領域のリストにあるいずれかのコードを持つ。
0030-0039 ISO-Latin-1 (及びASCII) ('0'-'9')
0041-005A ISO-Latin-1 (及びASCII) ラテン大文字 ('A'-'Z')
0061-007A ISO-Latin-1 (及びASCII) ラテン小文字 ('a'-'z')
00C0-00D6 ISO-Latin-1 補助文字
00D8-00F6 ISO-Latin-1 補助文字
00F8-00FF ISO-Latin-1 補助文字
0100-1FFF 拡張ラテンA,拡張ラテンB,IPA拡張,幅付き修飾記号,発音区分符,
基本ギリシャ文字,ギリシャ文字記号及びコプト文字,アルメニア文字,
拡張ヘブライ文字A,基本ヘブライ文字,拡張ヘブライ文字B,基本アラビア文字,
拡張アラビア文字,デーバナーガリ文字,ベンガル文字,グルムキ文字,グジャラティ文字,
オリヤ文字,タミル文字,テルグ文字,カナダ文字,マラヤラム文字,タイ文字,
ラオス文字,基本グルジア文字,拡張グルジア文字,ハングルジャモ,
拡張ラテン文字補助,拡張ギリシャ文字
3040-9FFF 平仮名,片仮名,ボポモフォ,ハングル互換ジャモ,その他のCJK漢字,
かっこ付きCJK文字及び月,CJK互換,ハングル,ハングル補足A,ハングル補足B,
CJK統合漢字
F900-FDFF CJK互換漢字 ,アルファベット表現形 ,アラビア文字表現形A
FE70-FEFE アラビア文字表現形B
FF10-FF19 全角数字
FF21-FF3A 全角ラテン大文字
FF41-FF5A 全角ラテン小文字
FF66-FFDC 半角片仮名及びハングル
0030-0039,
0041-005A,
0061-007A, 00C0-00D6,
00D8-00F6, 00F8-01F5,
01FA-0217, 0250-02A8,
02B0-02DE, 02E0-02E9,
0300-0345, 0360-0361,
0374-0375, 037A, 037E,
0384-038A, 038C, 038E,
038F-03A1, 03A3-03CE,
03D0-03D6, 03DA-03E2,
03DA, 03DC, 03DE, 03E0,
03E2-03F3, 0401-040C,
040E-044F, 0451-045C,
045E-0486, 0490-04C4,
04C7-04C8, 04CB-04CC,
04D0-04EB, 04EE-04F5,
04F8-04F9, 0531-0556,
0559-055F, 0561-0587,
0589, 05B0-05B9,
05BB-05C3, 05D0-05EA,
05F0-05F4, 060C, 061B,
061F, 0621, 0622-063A,
0640-0652, 0660-066D,
0670-06B7, 06BA-06BE,
06C0-06CE, 06D0-06ED,
06F0-06F9, 0901-0903,
0905-0939, 093C-094D,
0950-0954, 0958-0970,
0981-0983, 0985-098C,
098F-0990, 0993-09A8,
09AA-09B0, 09B2,
09B6-09B9, 09BC, 09BE,
09BF-09C4, 09C7-09C8,
09CB-09CD, 09D7,
09DC-09DD, 09DF-09E3,
09E6-09FA, 0A02,
0A05-0A0A, 0A0F-0A10,
0A13-0A28, 0A2A-0A30,
0A32-0A33, 0A35-0A36,
0A38-0A39, 0A3C, 0A3E,
0A3F-0A42, 0A47-0A48,
0A4B-0A4D
, 0A59-0A5C, 0A5E,
0A66-0A74, 0A81-0A83,
0A85-0A8B, 0A8D, 0A8F,
0A90-0A91, 0A93-0AA8,
0AAA-0AB0, 0AB2-0AB3,
0AB5-0AB9, 0ABC-0AC5,
0AC7-0AC9, 0ACB-0ACD,
0AD0, 0AE0, 0AE6-0AEF,
0B01-0B03, 0B05-0B0C,
0B0F-0B10, 0B13-0B28,
0B2A-0B30, 0B32-0B33,
0B36-0B39, 0B3C-0B43,
0B47-0B48, 0B4B-0B4D,
0B56-0B57, 0B5C-0B5D,
0B5F-0B61, 0B66-0B70,
0B82-0B83, 0B85-0B8A,
0B8E-0B90, 0B92-0B95,
0B99-0B9A, 0B9C, 0B9E,
0B9F, 0BA3-0BA4,
0BA8-0BAA, 0BAE-0BB5,
0BB7-0BB9, 0BBE-0BC2,
0BC6-0BC8, 0BCA-0BCD,
0BD7, 0BE7-0BF2,
0C01-0C03, 0C05-0C0C,
0C0E-0C10, 0C12-0C28,
0C2A-0C33, 0C35-0C39,
0C3E-0C44, 0C46-0C48,
0C4A-0C4D, 0C55-0C56,
0C60-0C61,
0C66-0C6F, 0C82-0C83,
0C85-0C8C, 0C8E-0C90,
0C92-0CA8, 0CAA-0CB3,
0CB5-0CB9, 0CBE-0CC4,
0CC6-0CC8, 0CCA-0CCD,
0CD5-0CD6, 0CDE, 0CE0,
0CE1, 0CE6-0CEF,
0D02-0D03, 0D05-0D0C,
0D0E-0D10, 0D12-0D28,
0D2A-0D39, 0D3E-0D43,
0D46-0D48, 0D4A-0D4D,
0D57, 0D60-0D61,
0D66-0D6F, 0E01-0E3A,
0E3F-0E5B, 0E81-0E82,
0E84, 0E87-0E88, 0E8A,
0E8D, 0E94-0E97,
0E99-0E9F, 0EA1-0EA3,
0EA5, 0EA7, 0EAA-0EAB,
0EAD-0EB9, 0EBB-0EBD,
0EC0-0EC4, 0EC6, 0EC8,
0EC9-0ECD, 0ED0-0ED9,
0EDC-0EDD, 10A0-10C5,
10D0-10F6, 10FB,
1100-1159, 115F-11A2,
11A8-11F9, 1E00-1E9A,
1EA0-1EF9, 1F00-1F15,
1F18-1F1D, 1F20-1F45,
1F48-1F4D, 1F50-1F57,
1F59, 1F5B, 1F5D,
1F5F-1F7D, 1F80-1FB4,
1FB6-1FC4, 1FC6-1FD3,
1FD6-1FDB, 1FDD-1FEF,
1FF2-1FF4, 1FF6-1FFE,
3041-3094, 3099-309E,
30A1-30FE, 3105-312C,
3131-318E, 3190-319F,
3200-321C, 3220-3243,
3260-327B, 327F-32B0,
32C0-32CB, 32D0-32FE,
3300-3376, 337B-33DD,
33E0-33FE, 3400-9FA5,
F900-FA2D,
FB00-FB06, FB13-FB17,
FB1E-FB36, FB38-FB3C,
FB3E, FB40, FB41, FB43,
FB44, FB46, FB47-FBB1,
FBD3-FD3F, FD50-FD8F,
FD92-FDC7, FDF0-FDFB,
FE70-FE72, FE74, FE76,
FE77-FEFC, FF10-FF19,
FF21-FF3A, FF41-FF5A,
FF66-FFBE, FFC2-FFC7,
FFCA-FFCF, FFD2-FFD7,
FFDA-FFDC
public static boolean
isJavaLetter(char ch)true を結果として返す。
'$'(\u0024)又は下線 '_'
(\u005F)である場合に,またその場合にだけ,Java文字と見なされる。
public static boolean
isJavaLetterOrDigit(char ch)true を結果として返す。
'$' (\u0024)又は下線 '_' (\u005F)である場合に,またその場合にだけ,Java文字・数字と見なされる。
public static boolean
isSpace(char ch)ch が次のいずれかの文字に該当する場合,true
を結果として返す。
それ以外の場合は,'\t' \u0009 HT 水平タブ
'\n' \u000A LF ラインフィード (改行)
'\f' \u000C FF フォームフィード
'\r' \u000D CR 復帰
' ' \u0020 SP 空白false を返す。
public static char
toLowerCase(char ch)ch
に対応する小文字がUnicode属性テーブルで定義されている場合,その対応する小文字を返す。それ以外は,実引数
ch を返す。
0041-005A

0061-007A,
00C0-00D6

00E0-00F6,
00D8-00DE

00F8-00FE,
0100-012E

0101-012F
(偶数から奇数), 0132-0136

0133-0137
(偶数から奇数), 0139-0147

013A-0148
(奇数から偶数), 014A-0176

014B-0177
(偶数から奇数), 0178

00FF,
0179-017D

017A-017E
(奇数から偶数), 0181

0253, 0182

0183, 0184

0185, 0186

0254, 0187

0188, 018A

0257, 018B

018C, 018E

0258, 018F

0259, 0190

025B, 0191

0192, 0193

0260, 0194

0263, 0196

0269, 0197

0268, 0198

0199, 019C

026F,
019D
0272,
01A0-01A4

01A1-01A5
(偶数から奇数), 01A7

01A8, 01A9

0283, 01AC

01AD, 01AE

0288, 01AF

01B0, 01B1

028A, 01B2

028B, 01B3

01B4, 01B5

01B6, 01B7

0292, 01B8

01B9, 01BC
01BD, 01C4
01C6, 01C5

01C6, 01C7

01C9, 01C8

01C9, 01CA

01CC,
01CB-01DB

01CC-01DC
(奇数から偶数), 01DE-01EE

01DF-01EF
(偶数から奇数), 01F1

01F3, 01F2

01F3, 01F4

01F5,
01FA-0216

01FB-0217
(偶数から奇数), 0386

03AC,
0388-038A

03AD-03AF,
038C
03CC,
038E
03CD,
038F
03CE,
0391-03A1

03B1-03C1,
03A3-03AB

03C3-03CB,
03E2-03EE

03E3-03EF
(偶数から奇数), 0401-040C

0451-045C,
040E
045E,
040F
045F,
0410-042F

0430-044F,
0460-0480

0461-0481
(偶数から奇数), 0490-04BE

0491-04BF
(偶数から奇数), 04C1

04C2, 04C3

04C4, 04C7

04C8, 04CB

04CC,
04D0-04EA

04D1-04EB
(偶数から奇数), 04EE-04F4

04EF-04F5
(偶数から奇数), 04F8

04F9,
0531-0556

0561-0586,
10A0-10C5

10D0-10F5,
1E00-1E94

1E01-1E95
(偶数から奇数), 1EA0-1EF8

1EA1-1EF9
(偶数から奇数), 1F08-1F0F

1F00-1F07,
1F18-1F1D

1F10-1F15,
1F28-1F2F

1F20-1F27,
1F38-1F3F

1F30-1F37,
1F48-1F4D

1F40-1F45,
1F59
1F51,
1F5B
1F53,
1F5D
1F55,
1F5F
1F57,
1F68-1F6F

1F60-1F67,
1F88-1F8F

1F80-1F87,
1F98-1F9F

1F90-1F97,
1FA8-1FAF

1FA0-1FA7,
1FB8
1FB0,
1FB9
1FB1,
1FBA
1F70,
1FBB
1F71,
1FBC
1FB3,
1FC8-1FCB

1F72-1F75,
1FCC
1FC3,
1FD8
1FD0,
1FD9
1FD1,
1FDA
1F76,
1FDB
1F77,
1FE8
1FE0,
1FE9
1FE1,
1FEA
1F7A,
1FEB
1F7B,
1FEC
1FE5,
1FF8
1F78,
1FF9
1F79,
1FFA
1F7C,
1FFB
1F7D,
1FFC
1FF3,
2160-216F

2170-217F,
24B6-24CF

24D0-24E9,
FF21-FF3A

FF41-FF5A
isLowerCase(20.5.11)は,メソッド toLowerCase の戻り値を実引数とした場合,必ずしも true を返すとは限らない。
toLowerCase についての仕様は,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。20.5を参照のこと。]
public static char
toUpperCase(char ch)ch
に対応する大文字がUnicode属性テーブルで定義されている場合,その対応する大文字を返す。それ以外は,実引数 ch を返す。
0061-007A

0041-005A,
00E0-00F6

00C0-00D6,
00F8-00FE

00D8-00DE,
00FF
0178,
0101-012F

0100-012E
(奇数から偶数), 0133-0137

0132-0136
(奇数から偶数), 013A-0148

0139-0147
(偶数から奇数), 014B-0177

014A-0176
(奇数から偶数), 017A-017E

0179-017D
(偶数から奇数), 017F

0053,
0183-0185

0182-0184
(奇数から偶数), 0188

0187, 018C

018B, 0192

0191, 0199

0198,
01A1-01A5

01A0-01A4
(奇数から偶数), 01A8

01A7, 01AD

01AC, 01B0

01AF, 01B4

01B3, 01B6

01B5, 01B9

01B8, 01BD

01BC, 01C5

01C4,
01C6
01C4,
01C8
01C7,
01C9
01C7,
01CB
01CA,
01CC
01CA,
01CE-01DC

01CD-01DB
(偶数から奇数), 01DF-01EF

01DE-01EE
(奇数から偶数), 01F2

01F1, 01F3

01F1, 01F5

01F4,
01FB-0217

01FA-0216
(奇数から偶数), 0253

0181, 0254

0186,
0257
018A,
0258
018E,
0259
018F,
025B
0190,
0260
0193,
0263
0194,
0268
0197,
0269
0196,
026F
019C,
0272
019D,
0283
01A9,
0288
01AE,
028A
01B1,
028B
01B2,
0292
01B7,
03AC
0386,
03AD-03AF

0388-038A,
03B1-03C1

0391-03A1,
03C2
03A3,
03C3-03CB

03A3-03AB,
03CC
038C,
03CD
038E,
03CE
038F,
03D0
0392,
03D1
0398,
03D5
03A6,
03D6
03A0,
03E3-03EF

03E2-03EE
(奇数から偶数), 03F0

039A,
03F1
03A1,
0430-044F

0410-042F,
0451-045C

0401-040C,
045E
040E,
045F
040F,
0461-0481

0460-0480
(奇数から偶数), 0491-04BF

0490-04BE
(奇数から偶数), 04C2

04C1, 04C4

04C3, 04C8

04C7, 04CC

04CB,
04D1-04EB
04D0-04EA (奇数から偶数),
04EF-04F5

04EE-04F4
(奇数から偶数), 04F9

04F8,
0561-0586

0531-0556,
1E01-1E95

1E00-1E94
(奇数から偶数), 1EA1-1EF9

1EA0-1EF8
(奇数から偶数), 1F00-1F07

1F08-1F0F,
1F10-1F15

1F18-1F1D,
1F20-1F27

1F28-1F2F,
1F30-1F37

1F38-1F3F,
1F40-1F45

1F48-1F4D,
1F51
1F59,
1F53
1F5B,
1F55
1F5D,
1F57
1F5F,
1F60-1F67

1F68-1F6F,
1F70
1FBA,
1F71
1FBB,
1F72-1F75

1FC8-1FCB,
1F76
1FDA,
1F77
1FDB,
1F78
1FF8,
1F79
1FF9,
1F7A
1FEA,
1F7B

1FEB, 1F7C

1FFA, 1F7D

1FFB,
1F80-1F87

1F88-1F8F,
1F90-1F97

1F98-1F9F,
1FA0-1FA7

1FA8-1FAF,
1FB0
1FB8,
1FB1
1FB9,
1FB3
1FBC,
1FC3
1FCC,
1FD0
1FD8,
1FD1
1FD9,
1FE0
1FE8,
1FE1
1FE9,
1FE5
1FEC,
1FF3
1FFC,
2170-217F

2160-216F,
24D0-24E9

24B6-24CF,
FF41-FF5A

FF21-FF3A
isUpperCase(20.5.12)は,メソッド toUpperCase の戻り値を実引数とした場合,必ずしも true を返すとは限らない。
toUpperCase についての仕様は,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。20.5を参照のこと。]
public static char
toTitleCase(char ch)ch に対応するタイトルケースがUnicode属性テーブルに定義されている場合,その対応するタイトルケース文字を返す。それ以外は,実引数 ch を返す。
isTitleCase (20.5.13)は,メソッド toTitleCase の戻り値を実引数とした場合,必ずしも trueを返すとは限らない。Unicode属性テーブルは,大文字を持つが独立したタイトルケースを持たない文字に対しても,常に大文字属性に対応するタイトルケース属性を持つ。
Character.toTitleCase('a') は 'A' を返す
Character.toTitleCase('Q') は 'Q' を返す
Character.toTitleCase('lj') は 'Lj'
を返す。この時,'lj' はUnicode文字 \u01C9
であり,'Lj' に対応するtitlecase文字 \u01C8
とする。
public static int
digit(char ch, int radix)ch を実引数 radixで指定された整数を基数とする数字と見なし,その数値を返す。radixの値が有効な基数ではない場合,又は文字 chが指定された基数で有効な数字ではない場合,-1 を返す
Character.MIN_RADIX(20.5.3)より小さくなく,かつCharacter.MAX_RADIX(20.5.4)より大きくない場合に,またその場合にだけ,有効とする。
[メソッド isDigit がその文字に対して trueを返し,Unicode属性テーブルで定義されているその文字の10進数値が指定された基数より小さい。この場合,その10進数字の値を返す。
'A' から 'Z'
まで(\u0041-\u005A)のいずれかであり,そのコードが
radix+'A'-10 より小さい。この場合,ch-'A'+10
を返す。
'a''z'
まで(\u0061-\u007A)のいずれかであり,そのコードが
radix+'a'-10 よりも小さい。この場合,ch-'a'+10
を返す。
digitについてのこの仕様は,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。20.5を参照のこと。]
public static char
forDigit(int digit, int radix)radix
の値が有効な基数ではない場合,又は digit
の値が指定された基数で有効な数字ではない場合,null文字
'\u0000' を返す。
radixより小さい場合に,またその場合にだけ,有効とする。
10 より小さい場合,文字値 '0'+digitを返す。それ以外の場合は,'a'+digit-10を返す。従って,forDigitで生成される数字は,次の昇順のASCII文字になる。
0123456789abcdefghijklmnopqrstuvwxyz
(これらの文字は,'\u0030' から '\u0039' 及び'\u0061' から '\u007a'である。大文字にする場合は,戻り値に対して次のようにメソッドtoUpperCase を呼び出す。
Character.toUpperCase(Character.forDigit(digit, radix))
20.6 クラス
抽象クラス java.lang.NumberNumber には,サブクラスとして Integer,Long,Float,及び Double がある。これらのサブクラスは,表現された数値を int,long,float,及び double
に変換する抽象メソッドを定義して,プリミティブ型をラップする。
public abstract class
Number {
public abstract int intValue();
public abstract long longValue();
public abstract float floatValue();
public abstract double doubleValue();
}
public abstract int
intValue()intValue は,このNumberオブジェクトによって表現される数値を型 int に変換した後,その値を返す。
Integer (20.7.8),Long (20.8.8),Float (20.9.12)及び Double (20.10.11)によって上書きされる。
public abstract long
longValue()longValue は,このNumberオブジェクト によって表現される数値を型 long に変換した後,その値を返す。
Integer (20.7.9),Long (20.8.9),Float (20.9.13)及び Double (20.10.12)によって上書きされる。
public abstract float
floatValue()floatValue は,このNumberオブジェクト
によって表現される数値を型 float に変換した後,その値を返す。
Integer (20.7.10),Long (20.8.10),Float (20.9.14)及び Double(20.10.13)によって上書きされる。
public abstract double
doubleValue()doubleValue は,このNumberオブジェクトによって表現される数値を型 double に変換した後,その値を返す。
Integer(20.7.10),Long(20.8.10),Float (20.9.14)及び Double (20.10.13)によって上書きされる。
20.7 クラス
java.lang.Integerpublic final class
Integer extends Number {
public static final int MIN_VALUE = 0x80000000;
public static final int MAX_VALUE = 0x7fffffff;
public Integer(int value);
public Integer(String s)
throws NumberFormatException;
public String toString();
public boolean equals(Object obj);
public int hashCode();
public int intValue();
public long longValue();
public float floatValue();
public double doubleValue();
public static String toString(int i);
public static String toString(int i, int radix);
public static String toHexString(long i);
public static String toOctalString(long i);
public static String toBinaryString(long i);
public static int parseInt(String s)
throws NumberFormatException;
public static int parseInt(String s, int radix)
throws NumberFormatException;
public static Integer valueOf(String s)
throws NumberFormatException;
public static Integer valueOf(String s, int radix)
throws NumberFormatException;
public static Integer getInteger(String nm);
public static Integer getInteger(String nm, int val);
public static Integer getInteger(String nm, Integer val);
}
public static final int
MIN_VALUE = 0x80000000;int の最小値
-2147483648 とする。
public static final int
MAX_VALUE = 0x7fffffff;int の最大値
2147483647 とする。
public
Integer(int value)Integerオブジェクト
を新しく作成し,実引数に指定されたプリミティブ値で初期化する。
public
Integer(String s) throws
NumberFormatExceptionIntegerオブジェクト を新しく作成し,それを10進表記の文字列によって表現された整数で初期化する。文字列は,メソッド
parseInt(20.7.18)
が基数10に対して行うのと同じ方法で int
値に変換される。
public String
toString()Integerオブジェクト によって表現される整数値を符号付き10進表現に変換し,その値を文字列として返す。これは,実引数を一つ取るメソッド toString(20.7.12)の実引数として,この整数値を渡すのと同じとする。
Object のメソッド toString (20.1.2)を上書きする。
public boolean
equals(Object obj)null でなく,このIntegerオブジェクトと同じ int 値を表現するIntegerオブジェクトである場合に,またその場合にだけ,true を返す。
equals
(20.1.3)を上書きする。
public int
hashCode()Integer オブジェクトによって表現されるプリミティブの
int 値を返す。
Object のメソッド hashCode
(20.1.4)を上書きする。
public int
intValue()Integerオブジェクト によって表現される int
値を返す。
Number のメソッド intValue
(20.6.1)を上書きする。
public long
longValue()Integerオブジェクト によって表現される int
値が,型 long に変換(5.1.2)され,その変換結果を返す。
Number のメソッド longValue
(20.6.2)を上書きする。
public float
floatValue()Integerオブジェクト によって表現される int
値が,型 float に変換(5.1.2)され,その変換結果を返す。
Number のメソッド floatValue
(20.6.3)を上書きする。
public double
doubleValue()Integerオブジェクト によって表現される int
値が,型 double に変換
(5.1.2)され,その変換結果を返す。
Number のメソッド doubleValue
(20.6.4)を上書きする。
public static String
toString(int i)toString
(20.7.13)の実引数として,この実引数と基数10 を渡すのと同じとする。
public static String
toString(int i, int radix)Character.MAX_RADIX (20.5.4)より大きい場合,代わりに 10 が基数として使用される。
'-'('\u002d')になる。一つ目の実引数が負でない場合,戻り値に符号は付かない。
'0'('\u0030')で表現される。それ以外の場合,絶対値の先頭文字は,ゼロ文字にならない。数字として使用できるASCII文字は,次の通りとする。
これらの文字の範囲は,0123456789abcdefghijklmnopqrstuvwxyz'\u0030' から '\u0039' まで,及び '\u0061' から '\u007a'とする。radix を N とすると,このうちの最初の N 個の文字が上記の順序で基数 Nの数字として使用される。したがって,16進数(基数16)での数字は,0123456789abcdefになる。大文字にする場合は,戻り値に対して次のようにクラスString のメソッド toUpperCase (20.12.36)を呼び出す。
Integer.toString(n, 16).toUpperCase()
public static String
toHexString(int i)
を加えた値になる。それ以外の場合は,実引数と同じ値を返す。
'0'('\u0030')で表現される。それ以外は,符号なしの絶対値の先頭文字は,ゼロ文字にならない。16進数字として使用できる文字は,次の通りとする。
これらの文字の範囲は,0123456789abcdef
'\u0030' から '\u0039' まで,及び '\u0061' から '\u0066' までとする。大文字にする場合は,戻り値に対して次のようにクラス String のメソッド toUpperCase (20.12.36) を呼び出す。
Long.toHexString(n).toUpperCase()
public static String
toOctalString(int i)
を加えた値になる。それ以外の場合は,実引数と同じ値を返す。
'0'('\u0030')で表現される。それ以外は,符号なしの絶対値の先頭文字は,ゼロ文字にならない。8進数字として使用できる文字は,次の通りとする。
これらの文字の範囲は,01234567'\u0030' から '\u0037' までとする。
public static String
toBinaryString(int i)
を加えた値になる。それ以外の場合は,実引数と同じ値を返す。
'0'('\u0030')で表現される。それ以外は,符号なしの絶対値の先頭文字は,ゼロ文字にならない。2進数字として使用できる文字は,'0'('\u0030')と '1'('\u0031')とする。
public static int
parseInt(String s)
throws
NumberFormatException'-'('\u002d')になる場合もある。この結果として取得された整数値を返す。これは,実引数を二つ取るメソッド parseInt(20.7.18)の実引数として,この実引数と基数 10 を渡すのと同じとする。
public static int
parseInt(String s, int radix)
throws
NumberFormatExceptionCharacter.digit(20.5.23)が負でない値を返すかどうかで判定できる)。ただし,先頭文字が負の値を示す '-'('\u002d')になる場合もある。この結果として取得された整数値を返す。
NumberFormatException の例外が投げられる。
次に例を挙げる。null 又は長さゼロの文字列とする。
radix が Character.MIN_RADIX (20.5.3)
より小さい,又はCharacter.MAX_RADIX
(20.5.4) より大きい。
radix にとって有効な文字ではない。ただし,文字列の長さが1より長い場合は,先頭文字のマイナス記号'-'('\u002d')を除く。
int の値ではない。
parseInt("0", 10) は 0 を返す
parseInt("473", 10) は 473 を返す
parseInt("-0", 10) は 0 を返す
parseInt("-FF", 16) は -255 を返す
parseInt("1100110", 2) は 102 を返す
parseInt("2147483647", 10) は 2147483647 を返す
parseInt("-2147483648", 10) は -2147483648 を返す
parseInt("2147483648", 10) は a NumberFormatException を投げる
parseInt("99", 8) は a NumberFormatException を投げる
parseInt("Kona", 10) は a NumberFormatException を投げる
parseInt("Kona", 27) は 411787 を返す
public static Integer
valueOf(String s)
throws
NumberFormatExceptionparseInt(20.7.17)に,この実引数を渡す場合と同じとする。文字列で指定された整数値を表すIntegerオブジェクトを返す。
Integerオブジェクト を返す。
new Integer(Integer.parseInt(s))
public static Integer
valueOf(String s, int radix)
throws
NumberFormatExceptionparseInt(20.7.18)に,この実引数を渡す場合と同じとする。文字列で指定された整数値を表すIntegerオブジェクト を返す。
Integerオブジェクト を返す。new Integer(Integer.parseInt(s, radix))
public static Integer
getInteger(String nm)System.getProperty(20.18.9)で取得されるものと同じシステム属性の名前として扱われる。この属性の文字列値は,整数値として解釈され,この値を表現するIntegerオブジェクトを返す。指定した名前の属性がない場合,又は属性の値が数値として正しい書式でない場合,null を返す。
Integerオブジェクト を返す。
getInteger(nm, null)
public static Integer
getInteger(String nm, int val)System.getProperty(20.18.9)で取得されるものと同じシステム属性の名前として扱われる。この属性の文字列値は,整数値として解釈され,この値を表現するIntegerオブジェクト を返す。属性の値が数値として正しい書式でない場合,二つ目の実引数の値を表現するIntegerオブジェクト を返す。
Integerオブジェクト を返す。getInteger(nm, new Integer(val))
しかし,実際には,次のように実装することもある。
Integer result = getInteger(nm, null);
return (result == null) ? new Integer(val) : result;
このように実装することで,デフォルト値が必要ない場合に不要なIntegerオブジェクト の割り当てを回避できる。
public static Integer
getInteger(String nm, Integer val)System.getProperty(
20.18.9)で取得されるものと同じシステム属性の名前として扱われる。この属性の文字列値は,整数値として解釈され,この値を表現するIntegerオブジェクト を返す。
二つ目の実引数は,デフォルト値として使われる。指定された名前の属性が存在しない場合,又は属性の値が数値として正しい書式ではない場合,二つ目の実引数を返す。
0x で始まる場合,又はASCII文字 #で始まり,その後ろにマイナス記号が続かない場合,残りの部分は,16を基数とするメソッド Integer.valueOf(20.7.20)と同じ方法で,16進整数として解析される。
0 で始まり,その後ろに他の文字が続く場合,8 を基数とするメソッド Integer.valueOf(20.7.20)と同じ方法で8進整数として解析される。
10 を基数とするメソッドInteger.valueOf(20.7.20)と同じ方法で10進整数として解析される。
20.8 クラス
java.lang.Longpublic final class
Long extends Number {
public static final long MIN_VALUE =0x8000000000000000L;
public static final long MAX_VALUE =0x7fffffffffffffffL;
public Long(long value);
public Long(String s)
throws NumberFormatException;
public String toString();
public boolean equals(Object obj);
public int hashCode();
public int intValue();
public long longValue();
public float floatValue();
public double doubleValue();
public static String toString(long i);
public static String toString(long i, int radix);
public static String toHexString(long i);
public static String toOctalString(long i);
public static Strin toBinaryString(long i);
public static long parseLong(String s)
throws NumberFormatException;
public static long parseLong(String s, int radix)
throws NumberFormatException;
public static Long valueOf(Strings)
throws NumberFormatException;
public static Long valueOf(String s, int radix)
throws NumberFormatException;
public static Long getLong(String nm);
public static Long getLong(String nm, long val);
public static Long getLong(String nm, Long val);
}
public static final long
MIN_VALUE = 0x8000000000000000L;public static final long
MAX_VALUE = 0x7fffffffffffffffL;public
Long(long value)Longオブジェクトを新しく作成し,実引数に指定されたプリミティブ値で初期化する。
public
Long(String s) throws
NumberFormatExceptionLongオブジェクト を新しく作成し,それを10進表記の文字列によって表現された整数で初期化する。文字列は,メソッド
parseLong(20.8.17)が基数10に対して行うのと同じ方法で
long 値に変換される。
public String
toString()Longオブジェクト によって表現される型 long整数値を符号付き10進表現に変換し,その値を文字列として返す。これは,実引数を一つ取るメソッド toString(20.7.12)の実引数として,この整数値を渡すのと同じとする。
Object のメソッド toString (20.1.2)を上書きする。
public boolean
equals(Object obj)null でなく,このLongオブジェクト と同じ
long 値を表現するLongオブジェクト
である場合に,またその場合にだけ,true を返す。
equals
(20.1.3)を上書きする。
public int
hashCode()Longオブジェクト によって表現されるプリミティブな
long
値の上位半分と下位半分の排他的論理和を返す。つまり,ハッシュコードは,次の式の値になる。
(int)(this.longValue()^(this.longValue()>>>32))
オブジェクトのメソッド hashCode
(20.1.4)を上書きする。
public int
intValue()Longオブジェクト によって表現される long
値が型 int に変換
(5.1.3)され,その変換結果を返す。
Number のメソッド intValue
(20.6.1)を上書きする。
public long
longValue()Longオブジェクト によって表現される long
値を返す。
Number のメソッド longValue(20.6.2)を上書きする。
public float
floatValue()Longオブジェクト によって表現される long
値が,型 float に変換
(5.1.2)され,その変換結果を返す。
Number のメソッド floatValue
(20.6.3)を上書きする。
public double
doubleValue()Longオブジェクト によって表現される long
値が,型 double に変換
(5.1.2)され,その変換結果を返す。
Number のメソッド doubleValue
(20.6.4)を上書きする。
public static String
toString(long i)toString(20.8.13)の実引数として,この実引数と基数 10 を渡すのと同じとする。
public static String
toString(long i, int radix)radix が Character.MIN_RADIX (20.5.3)より小さいか,Character.MAX_RADIX (20.5.4)より大きい場合,代わりに 10 が基数として使用される。
'-'
('\u002d')になる。一つ目の実引数が負でない場合,戻り値に符号は付かない。
'0'('\u0030')で表現される。それ以外の場合,絶対値の先頭文字は,ゼロ文字にならない。数字として使用できるASCII文字は,次の通りとする。
これらの文字の範囲は,0123456789abcdefghijklmnopqrstuvwxyz
'\u0030' から '\u0039'
まで,及び '\u0061' から '\u007a' とする。radix を N とすると,このうちの最初の N
個の文字が上記の順序で基数 N の数字として使用される。したがって,16進数(基数16)での数字は,0123456789abcdef
になる。大文字にする場合は,戻り値に対して次のようにクラス String のメソッド toUpperCase (20.12.36)を呼び出す。
Long.toString(n, 16).toUpperCase()
public static String
toHexString(long i)
を加えた値になる。それ以外の場合は,実引数と同じ値を返す。
'0'('\u0030')で表現される。それ以外は,符号なしの絶対値の先頭文字は,ゼロ文字にならない。16進数字として使用できる文字は,次の通りとする。
これらの文字の範囲は,0123456789abcdef'\u0030' から '\u0039'
まで,及び '\u0061' から '\u0066'
までとする。大文字にする場合は,戻り値に対して次のようにクラス
String のメソッド toUpperCase(20.12.36) を呼び出す。
Long.toHexString(n).toUpperCase()
public static String
toOctalString(long i)
を加えた値になる。それ以外の場合は,実引数と同じ値を返す。
'0'('\u0030')で表現される。それ以外は,符号なしの絶対値の先頭文字は,ゼロ文字にならない。8進数字として使用できる文字は,次の通りとする。
これらの文字の範囲は,01234567'\u0030' から '\u0037'
までとする。
public static String
toBinaryString(long i)
を加えた値になる。それ以外の場合は,実引数と同じ値を返す。
'0'('\u0030')で表現される。それ以外は,符号なしの絶対値の先頭文字は,ゼロ文字にならない。2進数字として使用できる文字は,'0'('\u0030')と '1'('\u0031')とする。
public static long
parseLong(String s)
throws
NumberFormatException'-'('\u002d')になる場合もある。この結果として取得された整数値を返す。これは,実引数を二つ取るメソッドparseInt(20.8.18)の実引数として,この実引数と基数 10 を渡すのと同じとする。
public static long
parseLong(String s, int radix)
throws
NumberFormatExceptionCharacter.digit
(20.5.23)が負でない値を返すかどうかで判定できる)。ただし,先頭文字が負の値を示す'-'('\u002d')になる場合もある。この結果として取得された long 値を返す。
22 以上の場合に数字として L 又は l が使われる場合を除く。
NumberFormatExceptionの例外が投げられる。
次に例を挙げる。null 又は長さゼロの文字列とする。
radix が Character.MIN_RADIX (20.5.3)より小さいか,又は Character.MAX_RADIX(20.5.4)より大きい。
radix にとって有効な文字ではなく,かつ先頭文字のマイナス記号 '-'('\u002d')でもない。
radix の数字ではない。
long の値として表せない。
parseLong("0", 10) は 0L を返す
parseLong("473", 10) は 473L を返す
parseLong("-0", 10) は 0L を返す
parseLong("-FF", 16) は -255L を返す
parseLong("1100110", 2) は 102L を返す
parseLong("99", 8) は a NumberFormatException を投げる
parseLong("Hazelnut", 10) は a NumberFormatExceptionを投げる
parseLong("Hazelnut", 36) は
1356099454469L を返す
public static Long
valueOf(String s)
throws
NumberFormatExceptionparseLong
(20.8.17)に,この実引数を渡す場合と同じとする。文字列で指定された整数値を表すLongオブジェクト を返す。
Longオブジェクト を返す。
new Long(Long.parseLong(s))
public static Long
valueOf(String s, int radix)
throws
NumberFormatExceptionparseLong
(20.8.18)に,この実引数を渡す場合と同じとする。文字列で指定された整数値を表すLongオブジェクト を返す。
Longオブジェクト を返す。
new Long(Long.parseLong(s, radix))
public static Long
getLong(String nm)System.getProperty(
20.18.9)で取得されるものと同じシステム属性の名前として扱われる。この属性の文字列値は,整数値として解釈され,この値を表現するLongオブジェクトを返す。指定した名前の属性がない場合,又は属性の値が数値として正しい書式でない場合,nullを返す。
Longオブジェクト を返す。
getLong(nm, null)
public static Long
getLong(String nm, long val)System.getProperty(20.18.9)で取得されるものと同じシステム属性の名前として扱われる。この属性の文字列値は,整数値として解釈され,この値を表現するオブジェクト
Long
を返す。属性の値が数値として正しい書式でない場合,二つ目の実引数の値を表現するLongオブジェクト を返す。
Long を返す。getLong(nm, new Long(val))
しかし,実際には,次のように実装することもある。
Long result = getLong(nm, null);
return (result == null) ? new Long(val) : result;
このように実装することで,デフォルト値が必要ない場合に不要なオブジェクト
Long の割り当てを回避できる。
public static Long
getLong(String nm, Long val)System.getProperty(20.18.9)で取得されるものと同じシステム属性の名前として扱われる。この属性の文字列値は,整数値として解釈され,この値を表現するLongオブジェクト を返す。
いずれの場合でも,Javaのソースコード(3.10.1)の場合とは異なり,0x で始まる場合,又はASCII文字 #で始まり,その後ろにマイナス記号が続かない場合,残りの部分は,16を基数とするメソッド Long.valueOf(20.7.20)と同じ方法で,16進整数として解析される。
0 で始まり,その後ろに他の文字が続く場合,8 を基数とするメソッド Long.valueOf(20.7.20)と同じ方法で8進整数として解析される。
10 を基数とするメソッド Long.valueOf(20.7.20)と同じ方法で10進整数として解析される。
L 又は l を文字列の最後に型指示子として使うことはできない。
20.9 クラス
java.lang.Floatpublic final class
Float extends Number {
public static final float MIN_VALUE = 1.4e-45f;
public static final float MAX_VALUE = 3.4028235e+38f;
public static final float NEGATIVE_INFINITY = -1.0f/0.0f;
public static final float POSITIVE_INFINITY = 1.0f/0.0f;
public static final float NaN = 0.0f/0.0f;
public Float(float value);
public Float(double value);
public Float(String s)
throws NumberFormatException;
public String toString();
public boolean equals(Object obj);
public int hashCode();
public int intValue();
public long longValue();
public float floatValue();
public double doubleValue();
public static String toString(float f);
public static Float valueOf(String s)
throws NullPointerException, NumberFormatException;
public boolean isNaN();
public static boolean isNaN(float v);
public boolean isInfinite();
public static boolean isInfinite(float v);
public static int floatToIntBits(float value);
public static float intBitsToFloat(int bits);
}
public static final float
MIN_VALUE = 1.4e-45f;floatのゼロ以外の正の最小値とする。この値は,Float.intBitsToFloat(0x1)が返す値と等しい。
public static final float
MAX_VALUE = 3.4028235e+38f;floatの正の有限な最大値とする。この値は,Float.intBitsToFloat(0x7f7fffff)が返す値と等しい。
public static final float
NEGATIVE_INFINITY =
-1.0f/0.0f;floatの負の無限大とする。この値は,Float.intBitsToFloat(0xff800000)が返す値と等しい。
public static final float
POSITIVE_INFINITY =
1.0f/0.0f;floatの正の無限大とする。この値は,Float.intBitsToFloat(0x7f800000)が返す値と等しい。
public static final float
NaN = 0.0f/0.0f;floatのNaN値とする。この値は,Float.intBitsToFloat(0x7fc00000)が返す値と等しい。
public
Float(float value)Floatオブジェクトを新しく作成し,実引数に指定されたプリミティブ値で初期化する。
public
Float(double value)Floatオブジェクトを新しく作成し,実引数を型 double から型 floatに下位変換(5.1.3)した値でそれを初期化する。
public
Float(String s) throws
NumberFormatExceptionFloatオブジェクトを新しく作成し,文字列で表現される型 float の浮動小数点値で初期化する。文字列は,メソッド valueOf(20.9.17)と同じ方法で
float 値に変換される。
public String
toString()Floatオブジェクト によって表現されるプリミティブなfloat 値は,実引数を一つ取るメソッド toString
(20.9.16)と全く同じように,文字列に変換される。
toString を上書きする(20.1.2)。
public boolean
equals(Object obj)null でなく,このFloatオブジェクト と同じfloat値を表現する場合に,またその場合にだけ,trueを返す。ここでは,二つの float 値をそれぞれメソッドfloatToIntBits(20.9.22)に渡し,同じ int 値が返された場合に限り,二つの float値が同じだと見なす。左右のオペランドがNaNの場合,== 演算子は false を返すが,このメソッド equalsは,このFloatオブジェクトと実引数の両方がNaNを表現している場合,true を返す。一方,片方のオペランドが正のゼロで,もう片方が負のゼロである場合,== 演算子は true を返すが,このFloatオブジェクト と実引数が,それぞれ符号の異なるゼロを表現している場合,このメソッド equals は falseを返す。この仕様により,ハッシュテーブルが正しく動作するようになる。
equals(20.1.3)を上書きする。
public int
hashCode()Floatオブジェクト によって表現される型 float
のプリミティブ値の整数ビット表現を返す。この値は,メソッド floatToIntBits(20.9.22)と同じ方法で取得される。
Object のメソッド hashCode(20.1.4)を上書きする。
public int
intValue()Floatオブジェクト によって表現される float 値が,型 int に変換(5.1.3)され,その変換結果を返す。
Number のメソッド intValue(20.6.1)を上書きする。
public long
longValue()Floatオブジェクト によって表現される float値が,型 long に変換(5.1.3)され,その変換結果を返す。
Number のメソッド longValue(20.6.2)を上書きする。
public float
floatValue()Floatオブジェクト によって表現される float値を返す
Number のメソッド floatValue(20.6.3)を上書きする。
public double
doubleValue()Floatオブジェクト によって表現される float値が,型 double に変換(5.1.2)され,その変換結果を返す。
Number のメソッド doubleValue(20.6.4)を上書きする。
public static String
toString(float f)
m や a
の小数部は,何桁まで出力する必要があるだろうか。少なくとも1桁は小数部を表現する必要がある。そして,それ以上の場合は,その実引数の値を隣接する型
"NaN" に変換する。
'-'('\u002d')とする。符号が正の場合,符号を示す文字はない。絶対値m について,
"Infinity"によって表現される。したがって,正の無限大は,"Infinity"を返し,負の無限大は "-Infinity" を返す。
"0.0"によって表現される。したがって,負のゼロは "-0.0" を返し,正のゼロは "0.0" を返す。
以上かつ
未満の場合,m
の整数部(先行するゼロのない10進形式),小数点 '.'
(\u002E),及び m の小数部を表す一つ以上の10進数で
m を表現する。
m が
未満又は
以上の場合,いわゆる“コンピュータ用科学表記”で
m を表現する。n を
となる一意の整数とし,
でm を割ったときの正しい商を a とすると,
となる。このとき,絶対値は a
の整数部(1桁の10進値),小数点 '.'
(\u002E),a
の小数部を表す10進数字,'E'(\u0045),及び n
の10進整数表現で表現される。この値は,実引数を一つ取る
Integer.toString
(20.7.12)と同じ方法で取得される。
float
の値から区別できるだけの桁数が必要である。つまり,このメソッドによってゼロ以外の有限の実引数
f に対して生成される10進表現の正確な値を x とすると,f
は x に最も近い float 値になる。二つの
float 値が同等に x に近い場合,f
はその有効数部の最上位ビットが 0 であるいずれかの値になる。
toString は,バージョン1.1のJavaで導入予定である。]
public static Float
valueOf(String s)
throws NullPointerException,
NumberFormatExceptions
は,浮動小数点値表現として解釈され,その値を表すオブジェクト
Float が作成され,それを返す。
s が null
である場合,NullPointerException が投げられる。
s の前後の空白類(20.5.19)は,無視される。s
の残りの部分は,字句文法規則に記述された FloatValue
を構成する必要がある。
FloatValue:
Signopt
Sign,Digits,及び ExponentPart は,3.10.2で定義されている。 Digits . Digitsopt ExponentPartopt
Signopt . Digits ExponentPartopt
s が
FloatValue
の形式を持たなかった場合,NumberFormatException
が投げられる。それ以外の場合は,通常の“コンピュータ用科学表記”による正確な10進値を表現していると見なされ,“無限に正確な”2進値に概念上変換される。その後,
IEEE 754浮動小数点演算の通常の丸め規則に従って型 float
に丸められる。最後に,この float 値を表すクラス
Float のオブジェクトが新しく作成される。
s 中に使うことはできない。
public boolean
isNaN()Floatオブジェクト によって表現される値がNaNである場合に,またその場合にだけ,true を返す。
public static boolean
isNaN(float v)true
を返す。
public boolean
isInfinite()Floatオブジェクトによって表現される値が正又は負の無限大である場合に,またその場合にだけ,trueを返す。
public static boolean
isInfinite(float v)true
を返す。
public static int
floatToIntBits(float value)
いずれの場合も,返された整数値をメソッド 0x80000000
で選択されるビット)は,浮動小数点数の符号を表現する。
0x7f800000
で選択されるビット)は,指数を表現する。
0x007fffff
で選択されるビット)は,浮動小数点数の有効数(仮数とも言う)を表現する。
0x7f800000 を返す。
0xff800000 を返す。
0x7fc00000 を返す。
intBitsToFloat(20.9.23)に渡すと,floatToIntBits
に与えた実引数と同じ浮動小数点値を返す。
public static float
intBitsToFloat(int bits)
0x7f800000 の場合,正の無限大を返す。
0xff800000 の場合,負の無限大を返す。
0x7f800001 から 0x7fffffff まで,又はcode>0xff800001 から 0xffffffff までの範囲にある場合,NaNを返す(Java言語では,事実上すべてのIEEE 754NaN値が単一のNaNと呼ばれる)。
int s = ((bits >> 31) == 0) ? 1 : -1;
int e = ((bits >> 23) & 0xff);
int m = (e == 0) ?
(bits & 0x7fffff) << 1 :
(bits & 0x7fffff) | 0x800000;
このとき,返される浮動小数点値は,数式
の値と等しくなる。
20.10 クラス
java.lang.Doublepublic final class
Double extends Number {
public static final double MIN_VALUE =
5e-324;
public static final double MAX_VALUE =
1.7976931348623157e+308;
public static final double NEGATIVE_INFINITY = -1.0/0.0;
public static final double POSITIVE_INFINITY = 1.0/0.0;
public static final double NaN = 0.0/0.0;
public Double(double value);
public Double(String s)
throws NumberFormatException;
public String toString();
public boolean equals(Object obj);
public int hashCode();
public int intValue();
public long longValue();
public float floatValue();
public double doubleValue();
public static String toString(double d);
public static Double valueOf(String s)
throws NullPointerException, NumberFormatException;
public boolean isNaN();
public static boolean isNaN(double v);
public boolean isInfinite();
public static boolean isInfinite(double v);
public static long doubleToLongBits(double value);
public static double longBitsToDouble(long bits);
}
public static final
double
MIN_VALUE = 5e-324;double
の正のゼロ以外の最小値とする。
この値は,Double.Double.longBitsToDouble(0x1L)
が返す値と等しい。
public static final
double
MAX_VALUE =
1.7976931348623157e+308;double
の正のゼロ以外の有限な最大値とする。この値は,次の式が返す値と等しい。
Double.longBitsToDouble(0x7fefffffffffffffL)
public static final
double
NEGATIVE_INFINITY = -1.0/0.0;double
の負の無限大とする。この値は,
Double.longBitsToDouble(0xfff0000000000000L) が返す値と等しい。
public static final
double
POSITIVE_INFINITY = 1.0/0.0;double
の正の無限大とする。この値は,Double.longBitsToDouble(0x7ff0000000000000L)
が返す値と等しい。
public static final
double
NaN = 0.0/0.0;double
のNaN値とする。この値は,Double.longBitsToDouble(0x7ff8000000000000L)
が返す値と等しい。
public
Double(double value)Doubleオブジェクト
を新しく作成し,実引数に指定されたプリミティブ値で初期化する。
public
Double(String s)
throws
NumberFormatExceptionDoubleオブジェクト
を新しく作成し,実引数に与えられた文字列によって表現される型
double の浮動小数点値で初期化する。文字列は,メソッド
valueOf(20.9.17)と同じ方法で
double 値に変換される。
public String
toString()Doubleオブジェクト によって表現されるプリミティブな
double 値は,実引数を一つ取るメソッド toString(20.10.15)と同じ方法で文字列に変換される。
toString を上書きする(20.1.2)。
public boolean
equals(Object obj)null でなく,このDoubleオブジェクト と同じ
double
値を表現する場合に,またその場合にだけ,true
を返す。ここでは,二つの double 値をそれぞれメソッド
doubleToLongBits(20.10.21)に渡し,同じ long
値が返された場合に限り,二つの double
値が同じだと見なす。左右のオペランドがNaNの場合,== 演算子は
false を返すが,このメソッド equals
は,このDoubleオブジェクト
と実引数の両方がNaNを表現している場合,true
を返す。一方,片方のオペランドが正のゼロで,もう片方が負のゼロである場合,== 演算子は true を返すが,このDoubleオブジェクト
と実引数が,それぞれ符号の異なるゼロを表現している場合,このメソッド
equals は false
を返す。一方,片方のオペランドが正のゼロで,もう片方が負のゼロである場合,== 演算子は true を返すが,このDoubleオブジェクト
と実引数が,それぞれ符号の異なるゼロを表現している場合,このメソッド
equals は false
を返す。この仕様により,ハッシュテーブルを正しく操作できる。
equals(20.1.3)を上書きする。
public int
hashCode()Doubleオブジェクト によって表現されるプリミティブな
double 値のlong整数ビット表現の上位ビットと下位ビットについて,メソッド doubleToLongBits(20.10.21)と同じ方法によって得られる排他的論理和を返す。つまり,ハッシュコード値は,次の式の値になる。
(int)(v^(v>>>32))
ここで,v は次の式の値とする。
long v = Double.doubleToLongBits(this.longValue());
オブジェクトのメソッド hashCode
(20.1.4)を上書きする。
public int
intValue()Doubleオブジェクト によって表現される double
値が,型 int に変換(5.1.3)され,その変換結果を返す。
Number のメソッド intValue(20.6.1)を上書きする。
public long
longValue()Doubleオブジェクト によって表現される double
値が,型 long に変換(5.1.3)され,その変換結果を返す。
Number のメソッド longValue(20.6.2)を上書きする。
public float
floatValue()Doubleオブジェクト によって表現される double 値が,型 float に変換(5.1.3)され,その変換結果を返す。
Number のメソッド floatValue(20.6.3)を上書きする。
public double
doubleValue()Doubleオブジェクト によって表現される double 値を返す。
Number のメソッド doubleValue(20.6.4)を上書きする。
public static String
toString(double d)
m や a の小数部は,何桁まで出力する必要があるだろうか。少なくとも1桁は小数部を表現する必要がある。そして,それ以上の場合は,その実引数の値を隣接する型 "NaN" に変換する。
'-' ('\u002d')とする。符号が正の場合,符号を示す文字はない。絶対値 m について,
"Infinity"
によって表現される。したがって,正の無限大は,"Infinity"
を返し,負の無限大は "-Infinity" を返す。
"0.0"
によって表現される。したがって,負のゼロは "-0.0"
を返し,正のゼロは "0.0" を返す。
以上かつ
未満の場合,m の整数部(先行するゼロのない10進形式),小数点 '.' (\u002E),及び m
の小数部を表す一つ以上の10進数でmを表現する。
未満又は
以上の場合,いわゆる“コンピュータ用科学表記”で
m を表現する。n を
となる一意の整数とし,
で
m を割ったときの正しい商を a とすると,
となる。このとき,絶対値はaの整数部(1桁の10進値),小数点 '.'(\u002E),a の小数部を表す10進数字,'E'(\u0045),及び n の10進整数表現で表現される。この値は,実引数を一つ取る Integer.toString (20.7.12)と同じ方法で取得される。
doubleの値から区別できるだけの桁数が必要である。つまり,このメソッドによってゼロ以外の有限の実引数 d に対して生成される10進表現の正確な値を x とすると,d は x に最も近い double 値になる。二つの double 値が同等にxに近い場合,d
はその有効数部の最上位ビットが 0 であるいずれかの値になる。
toStringは,バージョン1.1のJavaで導入予定である。]
public static Double
valueOf(String s)
throws NullPointerException,
NumberFormatExceptions は,浮動小数点値表現として解釈され,その値を表すDoubleオブジェクト が作成され,それを返す。
s が nullである場合,NullPointerException が投げられる。
s の前後の空白類(20.5.19)は,無視される。s
の残りの部分は,字句文法規則に記述された FloatValue
を構成する必要がある。
FloatValue:
Signopt Digits
Sign,Digits,及び ExponentPart は,3.10.2で定義されているものとする。 . Digitsopt ExponentPartopt
Signopt . Digits ExponentPartopt
s がFloatValueの形式を持たなかった場合,NumberFormatException が投げられる。それ以外の場合は,通常の“コンピュータ用科学表記”による正確な10進値を表現していると見なされ,“無限に正確な”2進値に概念上変換される。その後,IEEE 754浮動小数点演算の通常の丸め規則に従って型 double に丸められる。最後に,この double 値を表すクラス Double のオブジェクトが新しく作成される。
D 又は d を型指示子を文字列 s 中に使うことはできない。
public boolean
isNaN()Doubleオブジェクト によって表現される値がNaNである場合に,またその場合にだけ,true を返す。
public static boolean
isNaN(double v)true を返す。
public boolean
isInfinite()Doubleオブジェクト で表現される値が,正又は負の無限大である場合に,またその場合にだけ,true を返す。
public static boolean
isInfinite(double v)true
を返す。
public static long
doubleToLongBits(double value)
いずれの場合も,返された整数値をメソッド 0x8000000000000000L で選択されるビット)は,浮動小数点数の符号を表現する。
0x7ff0000000000000L で選択されるビット)は,指数を表現する。
0x000fffffffffffffL
で選択されるビット)は,浮動小数点数の有効数(仮数とも言う)を表現する。
0x7ff0000000000000L を返す。
0xfff0000000000000L を返す。
0x7ff8000000000000L を返す。
longBitsToDouble
(20.10.22)
に渡すと,doubleToLongBits
に与えた実引数と同じ浮動小数点値を返す。
public static double
longBitsToDouble(long bits)
0x7f80000000000000L の場合,正の無限大を返す。
0xff80000000000000L の場合,負の無限大を返す。
0x7ff0000000000001L から
0x7fffffffffffffffL まで,又は0xfff0000000000001Lから
0xffffffffffffffffL
までの範囲にある場合,NaNを返す(Java言語では,事実上すべてのIEEE 754
NaN値が単一のNaNと呼ばれる)。
s,e,及び
m を次のように実引数から求められる値とする。
int s = ((bits >> 63) == 0) ? 1 : -1;
int e = (int)((bits >> 52) & 0x7ffL);
long m = (e == 0) ?
(bits & 0xfffffffffffffL) << 1 :
(bits & 0xfffffffffffffL) | 0x10000000000000L;
このとき,返される浮動小数点値は,数式
の値と等しくなる。
20.11 クラス
クラスjava.lang.MathMath は、役に立つ基本数値定数とメソッドがある。
public final class
Javaプログラムの移植性を保つために,このパッケージの大半の数値関数の仕様では,特定の公開されたアルゴリズムと同じ結果が得られることが必要である。これらのアルゴリズムは,よく知られたネットワークライブラリ
Math {
public static final double E = 2.7182818284590452354;
public static final double PI = 3.14159265358979323846;
public static double sin(double a);
public static double cos(double a);
public static double tan(double a);
public static double asin(double a);
public static double acos(double a);
public static double atan(double a);
public static double atan2(double a, double b);
public static double exp(double a);
public static double log(double a);
public static double sqrt(double a);
public static double pow(double a, double b);
public static double IEEEremainder(double f1, double f2);
public static double ceil(double a);
public static double floor(double a);
public static double rint(double a);
public static int round(float a);
public static long round(double a);
public static double random();
public static int abs(int a);
public static long abs(long a);
public static float abs(float a);
public static double abs(double a);
public static int min(int a, int b);
public static long min(long a, long b);
public static float min(float a, float b);
public static double min(double a, double b);
public static int max(int a, int b);
public static long max(long a, long b);
public static float max(float a, float b);
public static double max(double a, double b);
}
netlib から fdlibm (“Freely Distributable Math Library”) パッケージとして入手できる。これらのアルゴリズムはCプログラミング言語でコーディングされているが,すべての演算がJava の実行順序で実行され,すべての浮動小数点演算が Javaの浮動小数点代数規則に従っていると理解されたい。
fdlibm
に基づいて定義されている。ある関数について fdlibm で複数の定義をしている場合(acosなど),“IEEE754コア関数”版が使用されている(これは,文字
e で始まるファイルに入っている)。
public static final
double
E = 2.7182818284590452354;double 値である。
public static final
double
PI = 3.14159265358979323846;
に最も近い
double 値である。
public static double
sin(double a)fdlibm(本節序文参照)に公開されている
sin アルゴリズムを使用して,実引数のサインの近似値を計算する。
public static double
cos(double a)fdlibm(本節序文参照)に公開されている
cos アルゴリズムを使用して,実引数のコサインの近似値を計算する。
public static double
tan(double a)fdlibm(本節序文参照)に公開されている
tan
アルゴリズムを使用して,実引数のタンジェントの近似値を計算する。
public static double
asin(double a)fdlibm(本節序文参照)に公開されている
asin
アルゴリズムを使用して,実引数のアークサインの近似値を計算する。
public static double
acos(double a)fdlibm(本節序文参照)に公開されている
acos
アルゴリズムを使用して,実引数のアークコサインの近似値を計算する。
public static double
atan(double a)fdlibm(本節序文参照)に公開されている
atan
アルゴリズムを使用して,実引数のアークタンジェントの近似値を計算する。
public static double
atan2(double y, double x)fdlibm
に公開されているtan2アルゴリズムを使用して,二つの実引数の商
のアークタンジェントの近似値を計算する。
に最も近い double 値を返す。
に最も近い double 値を返す。
に最も近い double
値を返す。
に最も近い double
値を返す。
に最も近い double 値を返す。
に最も近い double
値を返す。
に最も近い double
値を返す。
に最も近い double
値を返す。
public static double
exp(double a)fdlibm(本節序文参照)に公開されているexpアルゴリズムを使用して,実引数の指数関数の近似値(自然対数の底
e(20.11.1)を実引数で累乗)を計算する。
public static double
log(double a)fdlibm(本節序文参照)に公開されている
log アルゴリズムを使用して,実引数の自然対数の近似値を計算する。
public static double
sqrt(double a)double
値を返す。
public static double
pow(double a, double b)fdlibm(本節序文参照)に公開されている
pow アルゴリズムを使用して,最初の実引数を 2
番目の実引数で累乗した値の近似値を計算する。
(これまでの説明では,浮動小数点値は,その値をメソッド 1.0 を返す。
1.0
である場合,一つ目の実引数と同じ値を返す。
double 値として表すことができるときは,一つ目の実引数を二つ目の実引数で累乗した値を返す。
ceil(20.11.15)に渡した結果か,又は同じことだが,メソッドfloor
(20.11.16)に渡した結果と同じになる場合に限り,整数と見なされる。値は,その値にメソッドを適用した結果が元の値と等しい場合に,またその場合にだけ,実引数を一つとるメソッドに渡した結果と同じになる。)
public static double
IEEEremainder(double x, double y)
と等しくなる。ここで,
は正確な商
に最も近い整数でとする。二つの整数が同等に
;に近い場合,偶数の方が n
になる。剰余がゼロの場合の符号は,最初の実引数の符号と同じになる。
public static double
ceil(double a)double 値で返す。
-1.0
より大きい場合,負のゼロを返す。
Math.ceil(x) の値は -Math.floor(-x)
の値と同じとする。
public static double
floor(double a)double 値で返す。
public static double
rint(double a)double
値で返す。整数である二つの double
値が同等に実引数の値に近い場合,偶数の方の整数を返す。
public static int
round(float a)
を加え,その小数点以下を取り,型
int にキャストした整数を返す。
(int)Math.floor(a + 0.5f)
次は,特別な場合である。
0 を返す。
Integer.MIN_VALUE
(20.7.1)
の値以下である場合,Integer.MIN_VALUEの値を返す。
Integer.MAX_VALUE
(20.7.2)
の値以上である場合,Integer.MAX_VALUE の値を返す。
public static long
round(double a)
を加え,その小数点以下を取り,型 long にキャストした整数を返す。
(long)Math.floor(a + 0.5d)
次は,特別な場合である。
0 を返す。
Long.MIN_VALUE
(20.7.1)
の値以下である場合,Long.MIN_VALUEの値を返す。
Long.MAX_VALUE
(20.7.2)
の値以上である場合,Long.MAX_VALUE
の値を返す。
public static double
random()double 値で返す。
new java.util.Random()
以降,この新しい擬似乱数ジェネレータは,このメソッドのすべての呼び出しで使用される。それ以外では,使用されない。
public static int
abs(int a)Integer.MIN_VALUE
(20.7.1)の値,つまり int
で表現可能な最も小さい負の数値と等しい場合,実引数の値が負のまま返される。
public static long
abs(long a)Long.MIN_VALUE (20.8.1)の値,つまり long
で表現可能な最も小さい負の数値と等しい場合,実引数の値が負のまま返される。
public static float
abs(float a)Float.intBitsToFloat(0x7fffffff & Float.floatToIntBits(a))
[メソッド abs についてのこの仕様は,バージョン1.1で導入される予定である。]
public static double
abs(double a)Double.longBitsToDouble((Double.doubleToLongBits(a)<<1)>>>1)
[メソッド abs についてのこの仕様は,バージョン1.1で導入される予定である。]public static int
min(int a, int b)Integer.MIN_VALUE (20.7.1)の値に近いほうを返す。二つの実引数が同じ値である場合,その同じ値を返す。
public static long
min(long a, long b)Long.MIN_VALUE (20.8.1)の値に近いほうを返す。二つの実引数が同じ値である場合,その同じ値を返す。
public static float
min(float a, float b)min についてのこの仕様は,バージョン1.1で導入される予定である。]
public static double
min(double a, double b)min についてのこの仕様は,バージョン1.1で導入される予定である。]
public static int
max(int a, int b)Integer.MAX_VALUE (20.7.2)に近いほうを返す。二つの実引数が同じ値である場合,その同じ値を返す。
public static long
max(long a, long b)Long.MAX_VALUE (20.8.2)に近いほうを返す。二つの実引数が同じ値である場合,その同じ値を返す。
public static float
max(float a, float b)max についてのこの仕様は,バージョン1.1で導入される予定である。]
public static double
max(double a, double b)max についてのこの仕様は,バージョン1.1で導入される予定である。]
20.12 クラス
型 java.lang.StringString のオブジェクトは,一度作成すると変更できない。S型
tring
のオブジェクトは,固定長の文字の並びを表現する。これに対し,クラス
StringBuffer(20.13)は,変更可能な可変長の文字の並びを表現する。
String には,文字列内の個々の文字の検査,文字列の比較,文字列の検索,部分文字列の抽出,文字列内のすべての文字の大文字又は小文字への変換などを行うメソッドがある。
public final class
String {
public String();
public String(String value)
throws NullPointerException;
public String(StringBuffer buffer)
throws NullPointerException;
public String(char[] value)
throws NullPointerException;
public String(char[] value, int offset, int count)
throws NullPointerException, IndexOutOfBoundsException;
public String(byte[] ascii, int hibyte)
throws NullPointerException;
public String(byte[] ascii, int hibyte, int offset, int count)
throws NullPointerException, IndexOutOfBoundsException;
public String toString();
public boolean equals(Object anObject);
public int hashCode();
public int length();
public char charAt(int index);
public void getChars(int srcBegin, int srcEnd,
char dst[], int dstBegin)
throws NullPointerException, IndexOutOfBoundsException;
public void getBytes(int srcBegin, int srcEnd,
byte dst[], int dstBegin)
throws NullPointerException, IndexOutOfBoundsException;
public char[] toCharArray();
public boolean equalsIgnoreCase(String anotherString);
public int compareTo(String anotherString)
throws NullPointerException;
public boolean regionMatches(int toffset, String other,
int ooffset, int len)
throws NullPointerException;
public boolean regionMatches(boolean ignoreCase, int toffset,
String other, int ooffset, int len)
throws NullPointerException;
public boolean startsWith(String prefix)
throws NullPointerException;
public boolean startsWith(String prefix, int toffset)
throws NullPointerException;
public boolean endsWith(String suffix)
throws NullPointerException;
public int indexOf(int ch);
public int indexOf(int ch, int fromIndex);
public int indexOf(String str)
throws NullPointerException;
public int indexOf(String str, int fromIndex)
throws NullPointerException;
public int lastIndexOf(int ch);
public int lastIndexOf(int ch, int fromIndex);
public int lastIndexOf(String str)
throws NullPointerException;
public int lastIndexOf(String str, int fromIndex)
throws NullPointerException;
public String substring(int beginIndex);
public String substring(int beginIndex, int endIndex);
public String concat(String str)
throws NullPointerException;
public String replace(char oldChar, char newChar);
public String toLowerCase();
public String toUpperCase();
public String trim();
public static String valueOf(Object obj);
public static String valueOf(char[] data)
throws NullPointerException;
public static String valueOf(char[] data, int offset, int count)
throws NullPointerException, IndexOutOfBoundsException;
public static String valueOf(boolean b);
public static String valueOf(char c);
public static String valueOf(int i);
public static String valueOf(long l);
public static String valueOf(float f);
public static String valueOf(double d);
public String intern();
}
public
String()Stringオブジェクト
を新しく作成し,空の文字列で初期化する。
public
String(String value)Stringオブジェクト を新しく作成し,実引数に指定された文字列で初期化する。言い換えれば,このコンストラクタで新しく作成された文字列は,実引数の文字列の複写とする。
public
String(StringBuffer buffer)
throws
NullPointerExceptionStringオブジェクト を新しく作成し,実引数
StringBuffer
(20.13)に現在含まれている文字列で初期化する。文字列バッファの内容が複写される。これ以降,文字列バッファを変更しても,新しく作成した文字列には影響しない。
buffer が null である場合,NullPointerException が投げられる。
public
String(char[] data)
throws
NullPointerExceptionStringオブジェクトを新しく作成し,実引数の文字配列に現在含まれている文字列で初期化する。文字配列の内容が複写される。これ以降,文字配列を変更しても,新しく作成した文字列には影響しない。
data が nullの場合,NullPointerException が投げられる。
public
String(char[] data, int offset, int count)
throws
NullPointerException,
IndexOutOfBoundsExceptionStringオブジェクトを新しく作成し,実引数の文字配列の部分配列に現在含まれている文字列で初期化する。文字配列の内容が複写される。これ以降,文字配列を変更しても,新しく作成した文字列には影響しない。実引数
offset には,部分配列の先頭文字のインデクスを指定する。実引数
countには,部分配列の長さを指定する。部分配列の内容が複写される。これ以降,文字配列を変更しても,新しく作成された文字列には影響しない。
data が null
の場合,NullPointerException が投げられる。
offset が負である場合,又は count が負である場合,又は offset と count の和が data.length
より大きい場合,IndexOutOfBoundsException が投げられる。
public
String(byte[] ascii, int hibyte)
throws
NullPointerExceptionStringオブジェクトを新しく作成し,8ビット整数値の配列から構成される文字列で初期化する。戻り値の文字列の各文字
c は,バイト配列の対応する要素 b
から次のように構成される。
c == ((hibyte & 0xff) << 8) | (b & 0xff)
ascii が null
の場合,NullPointerException が投げられる。
public
String(byte[] ascii, int hibyte,
int offset, int count)
throws
NullPointerException,
IndexOutOfBoundsExceptionStringオブジェクトを新しく作成し,8ビット整数値の配列の部分配列から構成される文字列で初期化する。実引数offset には,部分配列の先頭文字のインデクスを指定する。実引数countには,部分配列の長さを指定する。部分配列の内容が複写される。これ以降,文字配列を変更しても,新しく作成された文字列には影響しない。戻り値の文字列の各文字c は,バイト配列の対応する要素 bから次のように構成される。
c == ((hibyte & 0xff) << 8) | (b & 0xff)
ascii が null の場合,NullPointerException が投げられる。
offset が負である場合,又は count が負である場合,又は offset と count の和が data.length より大きい場合,IndexOutOfBoundsException が投げられる。
public String
toString()String になっている)への参照を返す。
Object のメソッド toString(20.1.2)を上書きする。
public boolean
equals(Object anObject)null でなく,このStringオブジェクトと同じ文字列を表現するStringオブジェクトである場合に,またその場合にだけ,true を返す。
equals(20.1.3)を上書きする。
equalsIgnoreCase(20.12.16)及びメソッド compareTo
(20.12.17)もともに参照のこと。
public int
hashCode()Stringオブジェクト のハッシュコードを次のいずれかの方法で計算し,その値を返す。ここで,n
を文字の並びの長さ(20.12.11)
とし,
をインデクス i
の文字とする。
オブジェクトのメソッド
の場合,ハッシュコードは,int
演算を使用して
で求められる。
の場合,ハッシュコードは,int
演算を使用して
で求められる。ここで,
,また
であり,文字列から 8 文字又は 9
文字だけをサンプリングする。
hashCode を上書きする
(20.1.4)。
public int
length()Stringオブジェクト によって表現される文字列の長さを返す。
public char
charAt(int index)
throws
IndexOutOfBoundsExceptionStringオブジェクト
によって表現される文字列から,実引数 index によって示される文字を返す。配列のインデクスと同じように,文字列の先頭の文字はインデクスは
0 で,次の文字はインデクス 1 で示される。実引数
index が負である場合,又はこの文字列の長さ
(20.12.11)
以上である場合,IndexOutOfBoundsException が投げられる。
public void
getChars(int srcBegin, int srcEnd,
char dst[], int dstBegin)
throws NullPointerException,
IndexOutOfBoundsExceptionStringオブジェクト の文字を文字配列
dstに複写する。複写される先頭の文字はインデクス srcBegin
で示される。複写される末尾の文字はインデクス srcEnd-1
で示される(したがって,複写される文字の総数はsrcEnd -
srcBeginである)。文字は,インデクス dstBegin からインデクス
dstBegin + (srcEnd - srcBegin) - 1 までの dst
の部分配列に複写される。
dst が null
である場合,NullPointerException が投げられる。
IndexOutOfBoundsException
が投げられる。
srcBegin が負である
srcBegin が srcEnd よりも大きい
srcEnd がこのStringの長さよりも大きい
dstBegin が負である
dstBegin+(srcEnd-srcBegin) が dst.length
よりも大きい
public void
getBytes(int srcBegin, int srcEnd,
byte dst[], int dstBegin)
throws NullPointerException,
IndexOutOfBoundsExceptionStringオブジェクト の文字をバイト配列 dst
に複写する。各バイトには,対応する文字の下位 8 ビットだけが入る。各文字の上位8ビットは複写されず,転送には関与しません。複写される先頭の文字はインデクス
srcBegin で示される。複写される末尾の文字はインデクス srcEnd-1 で示される(したがって,複写される文字の総数は srcEnd-srcBegin である)。文字は,インデクス dstBegin からインデクス dstBegin+(srcEnd-srcBegin)-1 までのdstの部分配列に複写される。
dst が null である場合,NullPointerException が投げられる。
IndexOutOfBoundsException が投げられる。
srcBegin が負である
srcBegin が srcEnd よりも大きい
srcEnd がこの String の長さよりも大きい
dstBegin が負である
dstBegin+(srcEnd-srcBegin) が dst.length
よりも大きい
public char[]
toCharArray()String の長さ(20.12.11)と等しい。配列は初期化され,このオブジェクト
String によって表現される文字列を含む。
public boolean
equalsIgnoreCase(String anotherString)nullでなく,かつ大文字小文字を区別せずに,このStringオブジェクトと同じ文字列を表現するStringオブジェクト
である場合に,またその場合にだけ,true を返す。
二つの文字列は,長さが同じで,対応する各文字が大文字小文字を区別せずに同じである場合,大文字小文字を区別せずに同じであると言える。
== 演算子で比較される場合と同じ)。
Character.toUppercase
(20.5.21)の結果が同じとする。
Character.toLowercase
(20.5.20)の結果が同じとする。
equals
(20.12.9)もともに参照のこと。
public int
compareTo(String anotherString)
throws
NullPointerExceptionStringオブジェクト
によって表現される文字列を,辞書順で,実引数によって表現される文字列と比較する。このStringオブジェクトが,辞書順で実引数の文字列に先行する場合,負の整数を返す。このStringオブジェクトが,辞書順で実引数の文字列に後続する場合,正の整数を返す。文字列が等しい場合,ゼロを返す。compareToはメソッドequals(20.12.9)が0 を返す場合には,ゼロを返す。
anotherString が nullである場合,NullPointerException が投げられる。
<演算子で比較し,小さいと判定された方の文字を含む文字列が辞書順でもう一方の文字列に先行する。この場合,compareToは位置 kにある二つの文字列の文字の値の差を返す---つまり,次の式の値を返す。
this.charAt(k)-anotherString.charAt(k)
どのインデクス位置でも文字の値に差がない場合,短い方の文字列が長い方の文字列より辞書順で先行する。この場合,compareToは,文字列の長さの差を返す。つまり,次の式の値を返す。
this.length()-anotherString.length()
public boolean
regionMatches(int toffset,
String
other, int ooffset, int len)
throws NullPointerExceptionStringオブジェクト の部分文字列が,実引数 other
の部分文字列と比較される。これらの部分文字列が同一の文字列を表現している場合,trueを返す。比較の対象になるこのStringオブジェクト
の部分文字列は,インデクス toffset で始まり,長さがlen とする。比較の対象になる otherの部分文字列は,インデクス ooffset で始まり,長さがlenとする。次の条件の少なくとも一つが成り立つ場合,又はその場合にだけ,falseを返す。
toffset が負とする。
ooffset が負とする。
toffset+len がこのStringオブジェクトの長さよりも大きい。
ooffset+len が実引数 other の長さよりも大きい。
len より小さく,負ではない整数 k がある。
this.charAt(toffset+k) != other.charAt(ooffset+k)
other が nullである場合,NullPointerException が投げられる。
public boolean
regionMatches(boolean ignoreCase,
int toffset, String other, int ooffset, int len)
throws
NullPointerExceptionStringオブジェクト の部分文字列が,実引数 other
の部分文字列と比較される。これらの部分文字列が,ignoreCase が
true である場合に,またその場合にだけ,大文字小文字を区別せずに同じ文字列を表現している場合,true を返す。比較の対象になるこのStringオブジェクト の部分文字列は,インデクス toffset で始まり,長さが len とする。比較の対象になる other
の部分文字列は,インデクス ooffset で始まり,長さがlen
とする。次の条件の少なくとも一つが成り立つ場合,又はその場合にだけ,false
toffset が負とする。
ooffset が負とする。
toffset+len がこのStringオブジェクト の長さより大きい。
ooffset+len が実引数 other の長さよりも大きい。
len より小さい負ではない整数 k がある。
this.charAt(toffset+k) != other.charAt(ooffset+k)
ignoreCase が true であり,次のような
len より小さく,負ではない整数 k がある。
Character.toLowerCase(this.charAt(toffset+k)) !=
Character.toLowerCase(other.charAt(ooffset+k))
Character.toUpperCase(this.charAt(toffset+k)) !=
Character.toUpperCase(other.charAt(ooffset+k))
otherがnull である場合,NullPointerException が投げられる。
public boolean
startsWith(String prefix)
throws
NullPointerExceptionStringオブジェクトで表現される文字列の先頭部分である場合,またその場合にだけ,true を返す。
prefix が null である場合,NullPointerException が投げられる。
equals(20.12.9)で等しいと判定された場合,true を返す。
public boolean
startsWith(String prefix, int toffset)
throws
NullPointerExceptionStringオブジェクト
で表現される文字列のインデクス toffset で始まる部分文字列の先頭部分である場合,またその場合にだけ,true を返す。
prefixnull
である場合,NullPointerException が投げられる。
toffset が負である場合,又はこのオブジェクト
String の長さよりも大きい場合,false
を返す。それ以外の場合は,次の式の値を返す。
this.subString(toffset).startsWith(prefix)
public boolean
endsWith(String suffix)
throws NullPointerExceptionStringオブジェクト
で表現される文字列の末尾部分である場合,またその場合にだけ,true を返す。
suffix が null である場合,NullPointerException が投げられる。
equals(20.12.9)で等しいと判定された場合,true を返す。
public int
indexOf(int ch)Stringオブジェクト で表現される文字列中にある場合,最初に現われるその文字のインデクスを返す---つまり,次の式が成り立つ最小の k を返す。
この文字列の中に該当する文字がない場合,this.charAt(k) == ch
-1 を返す。
public int
indexOf(int ch, int fromIndex)ch を値に持つ文字が,このStringオブジェクト
で表現される文字列中のインデクス fromIndex
以降にある場合,最初に現われるその文字のインデクスを返す---つまり,次の式が成り立つ最小のk を返す。
位置 (this.charAt(k) == ch) && (k >= fromIndex)
fromIndex 以降にその文字が現われない場合,-1 を返す。
fromIndex の値に制限はない。fromIndex が負である場合,ゼロと同じ効果をもち,文字列全体が検索される。
fromIndex が文字列の長さより大きい場合,この文字列の長さと等しい値として扱われ,
1を返す。
public int
indexOf(String str)
throws
NullPointerExceptionstr がこのStringオブジェクトの部分文字列として現われる場合,該当する最初の部分文字列の先頭の文字のインデクスを返す---つまり,次の値がtrueである最小値kを返す。
this.startsWith(str, k)
strがこの文字列の部分文字列として現われない場合,-1 を返す。
str が nullである場合,NullPointerException が投げられる。
public int
indexOf(String str, int fromIndex)
throws
NullPointerExceptionstr が,このStringオブジェクト
の部分文字列としてインデクス fromIndex
以降に現われる場合,該当する最初の部分文字列の先頭の文字のインデクスを返す---つまり,次の式が成り立つ最小値 k を返す。
this.startsWith(str, k) && (k >= fromIndex)str が位置 fromIndex
以降にこの文字列の部分文字列として現われない場合,-1
を返す。
fromIndex の値に制限はない。fromIndex
が負である場合,ゼロと同じ効果をもち,文字列全体が検索される。fromIndexが文字列の長さより大きい場合,この文字列の長さと等しい値として扱われ,-1を返す。
strnull である場合,NullPointerException が投げられる。
public int
lastIndexOf(int ch)ch を値に持つ文字が,このStringオブジェクトで表現される文字列中にある場合,最後に現われるその文字のインデクスを返す---つまり,次の式が成り立つ最大の k を返す。
この文字列の中に該当する文字がない場合,this.charAt(k) == ch
-1 を返す。
public int
lastIndexOf(int ch, int fromIndex)Stringオブジェクトで表現される文字列中のインデクスfromIndex以前にある場合,最後に現われるその文字のインデクスを返す---つまり,次の式が成り立つ最大の k を返す。
位置 (this.charAt(k) == ch) && (k <= fromIndex)fromIndex 以前に,この文字列の中に該当する文字がない場合,-1 を返す。
fromIndex の値に制限はない。fromIndex
がこの文字列の長さ以上である場合は,この文字列の長さより1少ない値として扱われ,文字列全体が検索される。fromIndex が負である場合,-1 として扱われ,-1 を返す。
public int
lastIndexOf(String str)
throws
NullPointerExceptionstr が,このStringオブジェクト
の部分文字列として現われる場合,該当する最後の部分文字列の先頭の文字のインデクスを返す---つまり,次の値が true である最大の k を返す。
this.startsWith(str, k)str がこの文字列の部分文字列として現われない場合,-1 を返す。
str が null
である場合,NullPointerException が投げられる。
public int
lastIndexOf(String str, int fromIndex)
throws
NullPointerExceptionstr が,このStringオブジェクト の部分文字列としてインデクス fromIndex 以前に現われる場合,該当する最後の部分文字列の先頭の文字のインデクスを返す---つまり,次の式が成り立つ最大の k を返す。
this.startsWith(str, k) && (k <= fromIndex)str が,位置 fromIndex 以前にこの文字列の部分集合として現われない場合,-1 を返す。
fromIndex の値に制限はない。fromIndex
がこの文字列の長さより大きい場合は,この文字列の長さと等しい値として扱われ,文字列全体が検索される。fromIndex が負である場合,-1 として扱われ,-1 を返す。
str が null である場合,NullPointerException が投げられる。
public String
substring(int beginIndex)
throws
IndexOutOfBoundsExceptionStringオブジェクト によって表される部分文字列を表現するStringオブジェクト を新しく作成し,それを返す。この部分文字列は,位置 beginIndex の文字で始まり,文字列の末尾までとする。
beginIndex が負である,又はこのStringオブジェクト の長さより大きい場合,IndexOutOfBoundsException が投げられる。
"unhappy".substring(2) は "happy" を返す
"Harbison".substring(3) は "bison" を返す
"emptiness".substring(9) は "" (空文字列) を返すpublic String
substring(int beginIndex, int endIndex)
throws
IndexOutOfBoundsExceptionStringオブジェクト
によって表される部分文字列を表現するStringオブジェクト
を新しく作成し,それを返す。この部分文字列は,位置 beginIndex
の文字で始まり,位置 endIndex-1の文字で終わる。したがって,部分文字列の長さは,endIndex-beginIndexとする。
beginIndex が負である場合,又は endIndex がこのStringオブジェクト の長さより大きい場合,又は,beginIndex が
endIndex より大きい場合,このメソッドはIndexOutOfBoundsException を投げる。
"hamburger".substring(4, 8) は "urge" を返す
"smiles".substring(1, 5) は "mile" を返すpublic String
concat(String str)
throws
NullPointerExceptionStringオブジェクト
への参照を返す。それ以外の場合は,新しいStringオブジェクト
が作成され,それを返す。このとき,新しく作成されたオブジェクトは,このStringオブジェクト
によって表現される文字列と,実引数で表わされる文字列を連結した文字列を表現する。
"cares".concat("s") は "caress"を返す
"to".concat("get").concat("her") は "together"を返す
strnull である場合,NullPointerException が投げられる。
public String
replace(char oldChar, char newChar)oldChar が,このStringオブジェクト
によって表現される文字列の中に現われない場合,この文字列への参照を返す。それ以外の場合は,新しい Stringオブジェクトが作成され,それを返す。このとき,新しく作成されたオブジェクトは,このStringオブジェクト によって表現される文字列の中の oldChar をすべて newChar で置き換えた文字列を表現する。
"mesquite in your cellar".replace('e', 'o')
は "mosquito in your collar"を返す
"the war of baronets".replace('r', 'y')
は "the way of bayonets"を返す
"sparring with a purple porpoise".replace('p', 't')
は('p', 't') "starring with a turtle tortoise"を返す
"JonL".replace('q', 'x') は "JonL" を返す (変化しない)
public String
toLowerCase()Stringオブジェクト がメソッド
Character.toLowerCase(20.5.20)で異なる文字へマッピングされる文字を含まない場合,このStringオブジェクト への参照を返す。それ以外の場合,このメソッドは,このStringオブジェクト で表現される文字列の長さと同じ長さの文字列を表現する新しいStringオブジェクト を作成し,それを返す。このとき,新しく作成されたオブジェクトのすべての文字は,メソッド Character.toLowerCase をこのStringオブジェクト の対応する文字に実行し,取得された文字と等しくなる。
"French Fries".toLowerCase() は "french fries"を返す
"




".toLowerCase() は "



" を返すpublic String
toUpperCase()Stringオブジェクト がメソッド Character.toUpperCase
(20.5.21)で異なる文字へマッピングされる文字を含まない場合,このStringオブジェクト への参照を返す。それ以外の場合,このメソッドは,このStringオブジェクト で表現される文字列の長さと同じ長さの文字列を表現する新しいStringオブジェクト
を作成し,それを返す。このとき,新しく作成されたオブジェクトのすべての文字は,メソッド Character.toUpperCase をこのStringオブジェクト の対応する文字に実行し,取得された文字と等しくなる。
"Fahrvergnügen".toUpperCase() は "FAHRVERGNÜGEN" を返す
"Visit Ljubinje!".toUpperCase() は "VISIT LJUBINJE!" を返す
public String
trim()Stringオブジェクト
が空文字列を表現する場合,又はこのStringオブジェクト
によって表現される文字列の先頭の文字と末尾の文字がともに \u0020(スペース文字)より大きいのコードを持つ場合,このStringオブジェクト への参照を返す。\u0020
より大きいコードを持つ文字がない場合,空文字列を表現するStringオブジェクト が新しく作成され,それを返す。
\u0020 より大きい先頭文字のインデクスとし,m をこの文字列内でコードが \u0020 より大きい末尾文字のインデクスとすると,インデクス k にある文字で始まり,インデクス m にある文字で終わるこの文字列の部分文字列---つまり
this.substring(k, m+1)
の戻り値を表すStringオブジェクト---を新しく作成し,それを返す。
public static String
valueOf(Object obj)null である場合,"null" と等しい文字列を返す。それ以外の場合,obj.toString() の値を返す。メソッド toString(20.1.2)を参照のこと。
public static String
valueOf(char[] data)
throws
NullPointerExceptionpublic static String
valueOf(char[] data,
int offset,
int count)
throws NullPointerException,
IndexOutOfBoundsExceptionoffset は,部分配列の先頭の文字であり,実引数 count は,部分配列の長さを指定する。部分配列の内容が複写される。これ以降,文字配列を変更しても,新しく作成された文字配列には影響しない。
data が null である場合,NullPointerException が投げられる。
offset が負である場合,あるいは count
が負である場合,あるいは offset+count がdata.length より大きい場合,IndexOutOfBoundsException が投げられる。
public static String
valueOf(boolean b)true であれば,文字列 "true" を返す。
false であれば,文字列 "false" を返す。
public static String
valueOf(char c)cと等しい一つの文字を含む。
public static String
valueOf(int i)Integer.toString
(20.7.12)によって得られるものと同じとする。
public static String
valueOf(long l)Long.toString
(20.8.12)によって得られるものと同じとする。
public static String
valueOf(float f)Float.toString
(20.9.16)によって得られるものと同じとする。
public static String
valueOf(double d)Double.toString
(20.10.15)によって得られるものと同じとする。
public String
intern()String 内だけで保持される。
intern が呼び出される際に,プールが,すでにこのStringオブジェクトと等しい文字列を含んでいる場合,プールからの文字列を返す。このとき,文字列が等しいかどうかは,メソッドequals
(20.12.9)で判定される。それ以外の場合,このStringオブジェクト がプールに追加され,このStringオブジェクト への参照を返す。
s と tについて,s.equals(t) が trueである場合,またその場合にだけ,s.intern() == t.intern() がtrue になる。
20.13 クラス
文字列バッファは,String(20.12)と似ているが,変更することができる。
ある特定の時点では,文字列バッファには,ある特定の文字列が入っているが,その長さ及び内容は,特定のメソッドを呼び出すことによって変更できる。
java.lang.StringBufferpublic class
文字列バッファは, 容量(capacity)をもつ。
文字列バッファに含まれる文字列の長さがその容量を超えない限り,新しい内部的なバッファ配列を生成する必要はない。
StringBuffer {
public StringBuffer();
public StringBuffer(int length)
throws NegativeArraySizeException;
public StringBuffer(String str);
public String toString();
public int length();
public void setLength(int newLength)
throws IndexOutOfBoundsException;
public int capacity();
public void ensureCapacity(int minimumCapacity);
public char charAt(int index)
throws IndexOutOfBoundsException;
public void setCharAt(int index, char ch)
throws IndexOutOfBoundsException;
public void getChars(int srcBegin, int srcEnd,
char[] dst, int dstBegin)
throws NullPointerException, IndexOutOfBoundsException;
public StringBuffer append(Object obj);
public StringBuffer append(String str);
public StringBuffer append(char[] str)
throws NullPointerException;
public StringBuffer append(char[] str, int offset, int len)
throws NullPointerException, IndexOutOfBoundsException;
public StringBuffer append(boolean b);
public StringBuffer append(char c);
public StringBuffer append(int i);
public StringBuffer append(long l);
public StringBuffer append(float f);
public StringBuffer append(double d);
public StringBuffer insert(int offset, Object obj)
throws IndexOutOfBoundsException;
public StringBuffer insert(int offset, String str)
throws IndexOutOfBoundsException;
public StringBuffer insert(int offset, char[] str)
throws NullPointerException, IndexOutOfBoundsException;
public StringBuffer insert(int offset, boolean b)
throws IndexOutOfBoundsException;
public StringBuffer insert(int offset, char c)
throws IndexOutOfBoundsException;
public StringBuffer insert(int offset, int i)
throws IndexOutOfBoundsException;
public StringBuffer insert(int offset, long l)
throws IndexOutOfBoundsException;
public StringBuffer insert(int offset, float f)
throws IndexOutOfBoundsException;
public StringBuffer insert(int offset, double d)
throws IndexOutOfBoundsException;
public StringBuffer reverse();
}
+ (15.17.1)を実装するために使用することができる。
例えば,k が型 int,a が型 Objectをもつと仮定する。
すると,
この式は,あたかも次の式であるかのようにコンパイルされる。k + "/" + a
new StringBuffer().append(k).append("/").append(a).toString()
これは,文字列バッファを新しく生成し(初期値は,空),各オペランドの文字列表現を順に文字列バッファに追加し,それから文字列バッファの内容を文字列に変換する。
全体的には,これは,一時的な文字列を多数生成することを回避する。
StringBufferに対する主要な操作は,任意の型のデータを受け付けられるようにオーバロードされたappend及びinsertメソッドである。
いずれのメソッドも,与えられたデータを文字列に変換し,その文字列の各文字を文字列バッファの内容に追加する。
appendメソッドは,これらの文字を常にバッファの最後に追加する。
insertメソッドは,その文字を指定された位置に追加する。
zが,文字列バッファオブジェクトを参照しており,その内容が文字"start"である場合,メソッド呼出しz.append("le")は,文字列バッファの内容を文字列"startle"に変更し,z.insert(4, "le")は,文字列バッファの内容を文字列"starlet"に変更する。
sb が StringBufferのインスタンスを参照している場合,sb.append(x) は,sb.insert(sb.length(), x) と同じ効果をもつ。
public
StringBuffer()StringBufferオブジェクトを,初期的に,空文字列を表し,容量16をもつように初期化する。
public
StringBuffer(int length)
throws NegativeArraySizeExceptionStringBufferオブジェクトを,初期的に,空文字列を表し,容量は,実引数で指定された値をもつように初期化する。
NegativeArraySizeException を投げる。
public
StringBuffer(String str)StringBufferオブジェクトを,実引数と同じ文字列を表すように初期化する。
言い替えれば,この文字列バッファの初期の内容は,実引数の文字列を複写したものと同じとする。
文字列バッファの初期の容量は,16に実引数の文字列の長さを加えたものとする。
public String
toString()Stringオブジェクトが生成され,文字列バッファによって現在表現されている文字列に初期化された後,その新しいStringを返す。
その後の,その文字列バッファに対する変更は,返された文字列の内容には影響しない。
Stringオブジェクトを生成する際に,文字の並びの複製を保持するための新しいメモリを,割り当てないようにコーディングできる。
その代わりに,その文字列は,その文字列バッファが使用しているメモリを共有できる。
すべてのその後の,その文字列バッファの内容又は容量を変更するような処理では,その処理時に内部的なバッファの複製を作らなければならない。
この方法は,文字列連結演算を文字列バッファを使用して実装した時に,文字列連結演算(15.17.1)によって割り当てられるメモリ量を減らすのに効果的である。
toStringメソッド を上書きする。
public int
length()StringBufferオブジェクトによって現在表現されている文字列の長さを返す。
public int
capacity()StringBufferオブジェクトの,現在の容量を返す。
public void
ensureCapacity(int minimumCapacity)StringBufferオブジェクトの現在の容量が実引数よりも小さい場合,より大きな容量をもつ新しい内部バッファを生成する。
新しい容量は,次のうちの大きいほうとする。
minimumCapacityが正でない場合,このメソッドは,何の動作も行わずそのまま処理を戻す。
public void
setLength(int newLength)
throws IndexOutOfBoundsException'\u0000'とする。
又,このメソッドは,ensureCapacityメソッド(20.13.7)を実引数 newLengthで呼び出す。
IndexOutOfBoundsExceptionを投げる。
public char
charAt(int index)
throws IndexOutOfBoundsExceptionindexで指定された文字を返す。
配列のインデクスと同じように,文字列の先頭の文字のインデクスは,0,次の文字のインデクスは,1とする。
indexが,負又は文字列バッファの現在の長さ(20.13.5)よりも小さくない場合,IndexOutOfBoundsExceptionを投げる。
public void
setCharAt(int index, char ch)
throws IndexOutOfBoundsExceptionindexに文字chを含むことを除いて,古い文字列と同一の新しい文字列を表現するように変更される。
indexが,負又は文字列バッファの現在の長さ(20.13.5)よりも小さくない場合,IndexOutOfBoundsExceptionを投げる。
public void
getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
throws NullPointerException, IndexOutOfBoundsExceptionStringBufferオブジェクトから,配列dstに文字を複写する。
複写される最初の文字は,インデクスsrcBeginにあり,最後の文字は,srcEnd-1にある。
(したがって,複写される文字の総数は,srcEnd-srcBeginになる。)
文字は,インデクスdstBeginからインデクスdstBegin+(srcEnd-srcBegin)-1までの,dstの部分配列に複写される。
dst が nullである場合,NullPointerException を投げる。
IndexOutOfBoundsExceptionを投げ,配列dstは,変更されない。
srcBeginが負である。
srcBeginが,実引数srcEndより大きい。
srcEndが,現在のこの文字列バッファの長さであるthis.length()より大きい。
dstBegin+srcEnd-srcBeginが,dst.lengthより大きい。
public StringBuffer
append(Object obj)String.valueOfメソッド(20.12.38)によって変換されたかのように文字列に変換され,その文字列が,このStringBufferオブジェクトにappend(20.13.13)される。
このStringBufferオブジェクトへの参照を返す。
public StringBuffer
append(String str)strの文字を,順にこの文字列バッファの内容に追加する。
この文字列バッファの長さは,実引数の長さの分だけ増加する。
strがnullである場合,"null"の4文字を,この文字列バッファに追加する。
最初に,メソッドensureCapacity(20.13.7)を,この新しい文字列バッファの長さを実引数として呼び出す。
このStringBufferオブジェクトへの参照を返す。
appendメソッドを実行する前に文字列バッファに含まれていた,古い文字列の長さであるとする。
このとき,kがnより小さい場合,新しい文字列のインデクスkの文字は,古い文字列のインデクスkの文字と同じとする。
そうでなければ,実引数strのインデクスk-nの文字と等しい。
public StringBuffer
append(char[] str)
throws NullPointerExceptionensureCapacity(20.13.7)を,この新しい文字列バッファの長さを実引数として呼び出す。
このStringBufferオブジェクトへの参照を返す。
String.valueOf(20.12.39)によって実引数を文字列に変換し,その文字列の各文字を,このStringBufferオブジェクトにappend(20.13.13)した場合と同じとする。
public StringBuffer
append(char[] str,
int offset, int len)
throws NullPointerException,
IndexOutOfBoundsExceptionoffsetから始まる文字配列strの文字が,順にこの文字列バッファの内容に追加され,この文字列バッファの長さは,lenの分だけ増加する。
最初に,メソッド ensureCapacity(20.13.7)を,この新しい文字列バッファの長さを実引数にして呼び出す。
このStringBufferオブジェクトへの参照を返す。
String.valueOf(20.12.40)によって実引数を文字列に変換し,その文字列の文字を,このStringBufferオブジェクトにappend(20.13.13)した場合と同じとする。
public StringBuffer
append(boolean b)String.valueOf(20.12.41)によって変換したかのように,文字列に変換し,その文字列の文字を,このStringBufferオブジェクトにappend(20.13.13)する。
このStringBufferオブジェクトへの参照を返す。
public StringBuffer
append(char c)ensureCapacity(20.13.7)を,この新しい文字列バッファの長さを実引数にして呼び出す。
このStringBufferオブジェクトへの参照を返す。
String.valueOf(20.12.42)によって変換したかのように,文字列に変換し,その文字列の中の文字を,このStringBufferオブジェクトにappend(20.13.13)した場合と同じとする。
public StringBuffer
append(int i)String.valueOf(20.12.43)によって変換したかのように,文字列に変換し,その文字列の文字を,このStringBufferオブジェクトにappend(20.13.13)する。
このStringBufferオブジェクトへの参照を返す。
public StringBuffer
append(long l)String.valueOf(20.12.44)によって変換したかのように,文字列に変換し,その文字列の文字を,このStringBufferオブジェクトにappend(20.13.13)する。
このStringBufferオブジェクトへの参照を返す。
public StringBuffer
append(float f)String.valueOf(20.12.45)によって変換したかのように,文字列に変換し,その文字列の文字を,このStringBufferオブジェクトにappend(20.13.13)する。
このStringBufferオブジェクトへの参照を返す。
public StringBuffer
append(double d)String.valueOf(20.12.46)によって変換したかのように,文字列に変換し,その文字列の文字を,このStringBufferオブジェクトにappend(20.13.13)する。
このStringBufferオブジェクトへの参照を返す。
public StringBuffer
insert(int offset, Object obj)
throws IndexOutOfBoundsExceptionString.valueOf(20.12.38)によって変換したかのように,文字列に変換し,その文字列の文字を,このStringBufferオブジェクトの中のoffsetで示される位置に,insert(20.13.23)する。
このStringBufferオブジェクトへの参照を返す。
public StringBuffer
insert(int offset, String str)
throws IndexOutOfBoundsExceptionString実引数の文字を,その順に文字列バッファのoffsetで示される位置に挿入する。
もともと,それ以降の位置にあったすべての文字は,後ろに移動し,文字列バッファの長さは,実引数の長さの分だけ増加する。
strが,nullである場合,"null"の4文字を,この文字列バッファに挿入する。
最初に,メソッドensureCapacity(20.13.7)を,この新しい文字列バッファの長さを実引数にして呼び出す。
このStringBufferオブジェクトへの参照を返す。
offsetより小さい場合,古い文字列のインデクスkの文字
offsetより小さくなく,offset+str.length()より小さい場合,実引数strのインデクスk-offset の文字
offset+str.length()より小さくない場合,古い文字列のインデクスk-str.length()の文字public StringBuffer
insert(int offset, char[] str)
throws
NullPointerException,
IndexOutOfBoundsExceptionensureCapacity(20.13.7)を,この新しい文字列バッファの長さを実引数にして呼び出す。
このStringBufferオブジェクトへの参照を返す。
String.valueOf(20.12.39)によって変換したかのように,文字列に変換し,その文字列の文字を,このStringBufferオブジェクトのoffset で示される位置にinsert(20.13.23)するのと同じものとする。
StringBufferクラスは,オフセット,文字配列,及びその他二つの実引数を取るappendメソッド(20.13.15)を提供しているが,現在は,オフセット,文字配列,及びその他二つの実引数を取るinsertメソッドを提供していないことに注意のこと。
public StringBuffer
insert(int offset, boolean b)
throws IndexOutOfBoundsExceptionString.valueOf(20.12.41)によって変換したかのように,文字列に変換し,その文字列の文字を,このStringBufferオブジェクトのoffsetで示される位置にinsert(20.13.23)する。
このStringBufferオブジェクトへの参照を返す。
public StringBuffer
insert(int offset, char c)
throws IndexOutOfBoundsExceptionoffsetで示される位置に挿入する。この文字列バッファの長さは,一つだけ増加する。
最初に,メソッドensureCapacity(20.13.7)を,この新しい文字列バッファを実引数として呼び出す。
このStringBufferオブジェクトへの参照を返す。
String.valueOf(20.12.42)によって変換したかのように,文字列に変換し,その文字列の文字を,このStringBufferオブジェクトのoffsetで示される位置にinsert(20.13.23)するのと同じものとする。
public StringBuffer
insert(int offset, int i)
throws IndexOutOfBoundsExceptionString.valueOf(20.12.43)によって変換したかのように,文字列に変換し,その文字列の文字を,このStringBufferオブジェクトのoffsetで示される位置にinsert(20.13.23)する。
このStringBufferオブジェクトへの参照を返す。
public StringBuffer
insert(int offset, long l)
throws IndexOutOfBoundsExceptionString.valueOf(20.12.44)によって変換したかのように,文字列に変換し,その文字列の文字を,このStringBufferオブジェクトのoffsetで示される位置にinsert(20.13.23)する。
このStringBufferオブジェクトへの参照を返す。
public StringBuffer
insert(int offset, float f)
throws IndexOutOfBoundsExceptionString.valueOf(20.12.45)によって変換したかのように,文字列に変換し,その文字列の文字を,このオブジェクトStringBufferのoffsetで示される位置にinsert(20.13.23)する。
このStringBufferオブジェクトへの参照を返す。
public StringBuffer
insert(int offset, double d)
throws IndexOutOfBoundsExceptionString.valueOf(20.12.46)によって変換したかのように,文字列に変換し,その文字列の文字を,このオブジェクトStringBufferのoffsetで示される位置にinsert(20.13.23)する。
このStringBufferオブジェクトへの参照を返す。
public StringBuffer
reverse()StringBufferオブジェクトに含まれる文字列を,それと逆順の文字列によって置き換える。
このStringBufferオブジェクトへの参照を返す。
reverseメソッドを実行する前の文字列バッファに入っていた古い文字列の長さとする。
このとき,新しい文字列のインデクスkの文字は,古い文字列のインデクスn-k-1の文字と等しい。
20.14 クラス
クラスローダは,クラスをローディングするオブジェクトとする。
クラス名が与えられると,クラスローダは,そのクラス定義を構成するデータの検索又は生成を試みなければならない。
通常は,クラス名をファイル名に変換し,ファイルシステムからその名前の“クラスファイル”を読み取ってこれを行う。
java.lang.ClassLoaderClassオブジェクトには,それを定義したClassLoader (20.3.7)への参照が含まれる。
実行可能なJavaコードが,それまでにロードされていないクラスを使う必要がある場合にはいつでも,そのコードを含むクラスのクラスローダに対してloadClassメソッドを呼び出す。
Classオブジェクトは,クラスローダによっては生成されないが,Javaのランタイムによって要求されると自動的に生成される。
クラスClassのgetClassLoaderメソッド(20.3.7)で返される配列クラスのためのクラスローダは,その要素型のクラスローダと同じとする。
その要素型がプリミティブ型であれば,配列クラスは,クラスローダをもたない。
public abstract class
ClassLoader {
protected ClassLoader() throws SecurityException;
protected abstract Class loadClass(String name, boolean resolve)
throws ClassNotFoundException;
protected final Class defineClass(byte data[], int offset, int length)
throws NullPointerException, IndexOutOfBoundsException, ClassFormatError;
protected final void resolveClass(Class c)
throws NullPointerException;
protected final Class findSystemClass(String name)
throws ClassNotFoundException;
}
protected
ClassLoader() throws SecurityExceptionClassLoaderは,abstractクラスなので,クラスClassLoader自身のインスタンスを新しく生成することはできない。
しかしながら,ClassLoaderのサブクラスのためのすべてのコンストラクタは,必ずこのコンストラクタを,明示的又は暗示的に,直接的又は間接的に,呼び出さなければならない。
checkCreateClassLoaderメソッド(20.17.10)を呼び出す。
protected abstract Class
loadClass(String name, boolean link)
throws ClassNotFoundExceptionClassLoaderのサブクラスは,loadClassメソッドの実装を提供しなければならない。
Classオブジェクトを返すか,又は ClassNotFoundExceptionを投げることとする。
Classオブジェクトが返され,かつ link がtrueである場合,Classオブジェクトは,そのクラスオブジェクトを返す前に,link(12.3,20.14.4)されなければならない。
ClassLoader (20.14)のサブクラスに対して,loadClassメソッドを同期メソッドとして実装することが賢明である。
protected final Class
defineClass(byte data[], int offset, int length)
throws NullPointerException, IndexOutOfBoundsException, ClassFormatErrordata の offset からoffset+length-1の位置にあるバイト形式は,Java Virtual Machine Specification
で定義している有効なクラスファイルの形式をもたなければならない。
data が nullである場合,NullPointerException を投げる。
IndexOutOfBoundsExceptionを投げる。dataの指定されたバイトが有効なクラス定義になっていない場合,ClassFormatErrorを投げる。
そうでなければ,このメソッドは,データバイトで記述されたClassオブジェクトを生成し,それを返す。
protected final void
resolveClass(Class c)
throws NullPointerExceptionc が nullである場合,NullPointerExceptionを投げる。
Classオブジェクトcがすでにリンクされている場合,このメソッドは,そのまま制御を戻す。
protected final Class
findSystemClass(String name)
throws ClassNotFoundExceptionjava.lang.Objectなどの組み込みクラスと同様に,ホストの実装が保持しているクラス,例えばローカルファイルシステム,が含まれる。
name が与えられると,このメソッドは,loadClassメソッド と同様に,そのクラスのためのClassオブジェクトを返すか又はClassNotFoundExceptionを投げる。
20.15 クラス
クラス java.lang.ProcessRuntime のメソッド exec(20.16.3)は,Processオブジェクトへの参照を返す。
クラスProcessは,プロセスからの入力,プロセスへの出力,プロセス終了の待機,プロセスの終了状態のチェック,及びプロセスの破棄(強制終了)を実行するメソッドを提供する。
Processオブジェクトが破棄されるが,関連プロセスは,自動的には終了しない。Processオブジェクトを所有するJavaプロセスに対して,Processオブジェクトの表すプロセスを非同期的又は並行的に実行する必要はない。
public abstract class
Process {
public abstract OutputStream getOutputStream();
public abstract InputStream getInputStream();
public abstract InputStream getErrorStream();
public abstract int waitFor()
throws InterruptedException;
public abstract int exitValue()
throws IllegalThreadStateException;
public abstract void destroy();
}
public abstract
OutputStream
getOutputStream()OutputStreamを返す。
出力ストリームへの出力は,このProcessオブジェクトによって表現されるプロセスの標準入力ストリームにパイプされる。
public abstract InputStream
getInputStream()InputStreamを返す。
ストリームは,このProcessオブジェクトによって表現されるプロセスの標準出力ストリームからパイプされたデータを取得する。
public abstract InputStream
getErrorStream()InputStreamを返す。
ストリームは,このProcessオブジェクトによって表現されるプロセスのエラー出力ストリームからパイプされたデータを取得する。
public abstract int
waitFor()
throws InterruptedExceptionProcessオブジェクトが終了するまで,現在のスレッドを待機させる。
その後,プロセスの終了コードを返す。
慣例として,0は,正常終了を示す。
InterruptedException
を投げる。
public abstract int
exitValue()
throws IllegalThreadStateExceptionProcessオブジェクトによって表現されるプロセスがまだ終了していない場合,IllegalThreadStateExceptionを投げる。
そうでなければ,プロセスの終了コードを返す。
慣例として,0は,正常終了を示す。
public abstract void
destroy()Processオブジェクトによって表現されるプロセスを強制終了する。
20.16 クラス
java.lang.Runtimepublic class
Runtime {
public static Runtime getRuntime();
public void exit(int status) throws SecurityException;
public Process exec(String command)
throws IOException,SecurityException,IndexOutOfBoundsException;
public Process exec(String command, String envp[])
throws IOException,SecurityException,IndexOutOfBoundsException;
public Process exec(String cmdarray[])
throws IOException,SecurityException,IndexOutOfBoundsException;
public Process exec(String cmdarray[], String envp[])
throws IOException,SecurityException,IndexOutOfBoundsException;
public long totalMemory();
public long freeMemory();
public void gc();
public void runFinalization();
public void traceInstructions(boolean on);
public void traceMethodCalls(boolean on);
public void load(String filename)
throws SecurityException, UnsatisfiedLinkError;
public void loadLibrary(String libname)
throws SecurityException, UnsatisfiedLinkError;
public InputStream getLocalizedInputStream(InputStream in);
public OutputStream getLocalizedOutputStream(OutputStream out);
}
public static Runtime
getRuntime()Runtimeオブジェクトを返す。
クラスRuntimeのメソッドの多くは,インスタンスメソッドであり,現在のRuntimeオブジェクトに対して呼び出される。
public void
exit(int status)
throws SecurityExceptioncheckExitメソッド(20.17.13)をstatus値を実引数として呼び出す。
System のメソッドexit(20.18.11)も又参照のこと。
これは,このメソッドを呼び出すのによく使われる慣例的かつ便利な方法である。
public Process
exec(String command)
throws IOException, SecurityException, IndexOutOfBoundsExceptioncommandは,トークンに解析され,別のプロセスでコマンドとして実行される。
トークンの解析は,次に示す呼出しで生成されるStringTokenizer (21.10)によって行われる。
new StringTokenizer(command)
この呼出しでは,これ以上の文字カテゴリは,変更されない。
20.16.4を参照のこと。
exec(command, null)public Process
exec(String command, String envp[])
throws IOException, SecurityException, IndexOutOfBoundsExceptioncommand は,トークンに解析され,envpで指定された環境をもつ別のプロセスでコマンドとして実行される。
トークンの解析は,次に示す呼出しで生成されるStringTokenizer (21.10)によって行われる。
new StringTokenizer(command)
この呼出しでは,これ以上の文字カテゴリは,変更されない。
commandをトークンに分解し,文字列トークナイザがそのトークンを分解した順番にトークンを含む,新しい配列cmdarrayを生成する。
このメソッドの振舞いは,次の呼出しと同じとする。
20.16.6を参照のこと。
exec(cmdarray, envp)public Process
exec(String cmdarray[])
throws IOException, SecurityException, NullPointerException, IndexOutOfBoundsExceptioncmdarrayのトークンで指定されたコマンドを,別のプロセスとして実行する。
20.16.6を参照のこと。
exec(cmdarray, null)public Process
exec(String cmdarray[], String envp[])
throws IOException, SecurityException, NullPointerException, IndexOutOfBoundsExceptioncheckExecメソッド(20.17.14)を,cmdarrayの一つ目の要素を実引数として呼び出す。
cmdarray が nullである場合,NullPointerExceptionを投げる。
cmdarray が空配列(長さ0)である場合,IndexOutOfBoundsExceptionを投げる。
cmdarray,システム属性を定義する“環境”を表す文字列配列envpが指定されると,指定されたコマンドを実行するプロセスを新しく生成し,新しいプロセスを表現するProcessオブジェクト(20.15)を返す。
public long
totalMemory()public long
freeMemory()totalMemoryメソッドから返される現在の値より小さくなる。
gcメソッドを呼び出すと,freeMemoryから返される値が増えることがある。
public void
gc()gc とは,“ガベージ コレクタ (garbage collector)”を表す)。
gcメソッドが明示的に呼び出されないと,必要に応じて再利用プロセスが,別のスレッドで自動的に実行される。
System のgcメソッド(20.18.12)も又参照のこと。
これは,このメソッドを呼び出すのによく使われる慣例的かつ便利な方法である。
public void
runFinalization()finalizeメソッド がまだ呼び出されていないオブジェクトのfinalizeメソッドの実行を試みる。
Java仮想計算機は,メソッド呼出しから制御が戻った時点で,未完了のファイナライズを可能な限り終了している。
runFinalizationメソッド が明示的に呼び出されないと,必要に応じてファイナライズプロセスが別のスレッドで自動的に実行される。
System のrunFinalizationメソッド (20.18.13)も又参照のこと。
これは,このメソッドを呼び出すのによく使われる慣例的かつ便利な方法である。
public void
traceInstructions(boolean on)trueを指定してこのメソッドを呼び出すと,Java仮想計算機は,実行する命令単位のデバッグ情報を出力する。
この情報の形式と,それが出力されるファイル又はそのほかの出力ストリームは,ホスト環境によって異なる。
falseを指定してこのメソッドを呼び出すと,Java仮想計算機は,命令単位のデバッグ情報の出力を中止する。
public void
traceMethodCalls(boolean on)trueを指定してこのメソッドを呼び出すと,Java仮想計算機は,実行するメソッド呼出し単位のデバッグ情報を出力する。
この情報の形式と,それが出力されるファイル又はその他の出力ストリームは,ホスト環境によって異なる。
falseを指定してこのメソッドを呼び出すと,Java仮想計算機は,メソッド単位のデバッグ情報の出力を中止する。
public void
load(String filename)checkLinkメソッド (20.17.17)を,filenameを実引数として呼び出す。
loadLibrary(20.16.14)に似ているが,実引数としてライブラリの名前でなく,一般的なファイルの名前を取り,ネイティブコードのファイルもロードできる。
System のメソッド load(20.18.14)も又参照のこと。
これは,このメソッドを呼び出すのによく使われる慣例的かつ便利な方法である。
public void
loadLibrary(String libname)checkLinkメソッド (20.17.17)を,libnameを実引数として呼び出す。
System のメソッド loadLibrary(20.18.15)も又参照のこと。
これは,このメソッドを呼び出すのによく使われる慣例的かつ便利な方法である。
クラスの実装でメソッドnativeを使用する場合,その一般的なやり方は,ネイティブコードをライブラリファイル(ここでは,LibFile)に入れ,クラス宣言の中で次の静的初期化子を入れる。
static { System.loadLibrary("LibFile"); }
クラスがロードされ,初期化される(12.4)と,メソッドnativeに必要なネイティブコードの実装もロードされる。
public InputStream
getLocalizedInputStream(InputStream in)InputStream(22.3)を実引数として,ローカライズされている点だけが実引数と異なる InputStreamを返す。
データは,ストリームから読み取られる際に,自動的にローカル書式から Unicodeに変換される。
実引数がすでにローカライズされたストリームの場合,それをそのまま戻り値として返す。
public OutputStream
getLocalizedOutputStream(OutputStream out)OutputStream (22.15)を実引数として取り,ローカライズされている点だけが実引数と異なる OutputStreamを返す。
データは,ストリームに書き込まれる際に,自動的に Unicodeからローカル書式に変換される。
実引数が既にローカライズされたストリームの場合,それをそのまま戻り値として返す。
20.17 クラス
java.lang.SecurityManagerpublic abstract class
実行中のJavaプログラムには,セキュリティマネージャが設定されていることがある。
これは,クラスSecurityManager {
protected boolean inCheck;
protected SecurityManager()
throws SecurityException;
protected Class[] getClassContext();
protected int classDepth(String name);
protected boolean inClass(String name);
protected ClassLoader currentClassLoader();
protected int classLoaderDepth();
protected boolean inClassLoader();
public boolean getInCheck();
public void checkCreateClassLoader()
throws SecurityException;
public void checkAccess(Thread t)
throws SecurityException;
public void checkAccess(ThreadGroup g)
throws SecurityException;
public void checkExit(int status)
throws SecurityException;
public void checkExec(String cmd)
throws SecurityException;
public void checkPropertiesAccess()
throws SecurityException;
public void checkPropertyAccess(String key)
throws SecurityException;
public void checkLink(String libname)
throws SecurityException;
public void checkRead(int fd)
throws SecurityException;
public void checkRead(String file)
throws SecurityException;
public void checkWrite(int fd)
throws SecurityException;
public void checkWrite(String file)
throws SecurityException;
public void checkDelete(String file)
throws SecurityException;
public void checkConnect(String host, int port)
throws SecurityException;
public void checkListen(int port)
throws SecurityException;
public void checkAccept(String host, int port)
throws SecurityException;
public void checkSetFactory()
throws SecurityException;
public boolean checkTopLevelWindow()
throws SecurityException;
public void checkPackageAccess(String packageName)
throws SecurityException;
public void checkPackageDefinition(String packageName)
throws SecurityException;
}
SecurityManagerのインスタンスである。
現在のセキュリティマネージャは,System.getSecurityManager()メソッド(20.18.4)を呼び出せば確認できる。
SecurityManagerには,名前が"check"で始まるメソッドが多数ある。
これらのメソッドは,Javaライブラリのさまざまなメソッドが重要な処理を行う前に呼び出される。
チェックメソッドの呼出しは,次のようにして行われる。
SecurityManager security = System.getSecurityManager();
if (security != null) {
security.checkXXX(arguments);
}
セキュリティマネージャは,このコードで例外を投げて,処理の実行を中止できる。
通常,ルーチンをチェックするセキュリティマネージャは,処理を許可する場合は,何も実行しないで制御を戻し,処理を禁止する場合は,SecurityExceptionを投げる。
ただし,checkTopLevelWindow(20.17.27)は,例外で,このメソッドは,許可レベルのいずれか一方を示すために,必ず boolean 値を返す。
protected boolean
inCheck = false;trueが代入されている。
これは,チェックするルーチンが外部コードを呼び出す必要がある場合に重要である。
この後,外部コードでメソッド getInCheck(20.17.9)を使用すれば,このフラグの状態を確認できる。
protected
SecurityManager()
throws
SecurityExceptionSecurityExceptionを投げる。
protected Class[]
getClassContext()0の位置にある要素がスタックの一番上に対応する。
要素がClassオブジェクトの場合,そのスタックフレームは,そのClassオブジェクトによって表現されるクラスのメソッド呼出しに対応する。
protected int
classDepth(String name)nameをクラスの完全限定名としてもつメソッドのうち,最後に呼び出されたものを探し出す。
該当するメソッドが見つかると,スタックの一番上からの距離を,負でない整数として返す。
そうでなければ,-1 を返す。
protected boolean
inClass(String name)nameをクラスの完全限定名としてもつメソッドのうち,最後に呼び出されたものを探し出す。
該当するメソッドが見つかると,trueを返す。
そうでなければ,false を返す。
protected ClassLoader
currentClassLoader()ClassLoaderへの参照を返す。
そうでなければ,null を返す。
protected int
classLoaderDepth()-1を返す。
protected boolean
inClassLoader()trueを返す。
そうでなければ,false を返す。
public boolean
getInCheck()inCheck フィールド(20.17.1)の値を返す。
public void
checkCreateClassLoader()
throws SecurityExceptionSecurityException を投げる。
ClassLoader(20.14.1)のコンストラクタによって呼び出される。
SecurityManagerによって定義されたcheckCreateClassLoaderメソッドは,常に SecurityExceptionを投げる。
インストールされたセキュリティマネージャでクラスローダの生成が許可されている場合は,サブクラスでこのメソッドを上書きしなければならない。
public void
checkAccess(Thread t)
throws
SecurityExceptiontの変更が禁止されている場合,SecurityExceptionを投げる。
ThreadのcheckAccessメソッド(20.20.12)によって呼び出される。
SecurityManagerによって定義されたcheckAccessメソッドは,常にSecurityExceptionを投げる。
インストールされたセキュリティマネージャでスレッドの変更が許可されている場合は,サブクラスでこのメソッドを上書きしなければならない。
public void
checkAccess(ThreadGroup g)
throws SecurityExceptiongの変更が禁止されている場合,SecurityException を投げる。
ThreadGroup のcheckAccessメソッド(20.21.4)によって呼び出される。
SecurityManagerによって定義されたcheckAccessメソッド は,常に SecurityExceptionを投げる。
インストールされたセキュリティマネージャでスレッドグループの変更が許可されている場合は,サブクラスでこのメソッドを上書きしなければならない。
public void
checkExit(int status)
throws SecurityExceptionSecurityExceptionを投げる。
Runtime のメソッドexit(20.16.2)によって呼び出される。
SecurityManagerによって定義されたcheckExitメソッドは,常にSecurityExceptionを投げる。
インストールされたセキュリティマネージャで終了が許可されている場合は,サブクラスでこのメソッドを上書きしなければならない。
public void
checkExec(String cmd)
throws SecurityExceptionexecコマンドの実行が禁止されている場合,SecurityExceptionを投げる。
実引数 cmd は,実行するコマンドの名前とする。
Runtimeのメソッドexec(20.16.6)によって呼び出される。
SecurityManagerによって定義されたcheckExecメソッドは,常に SecurityExceptionを投げる。
インストールされたセキュリティマネージャでexecコマンドが許可されている場合は,サブクラスでこのメソッドを上書きしなければならない。
public void
checkPropertiesAccess()
throws SecurityExceptionSecurityExceptionを投げる。
SystemのメソッドgetProperties(20.18.7)及びsetProperties(20.18.8)によって呼び出される。
SecurityManagerによって定義されたメソッドcheckPropertiesAccessは,常にSecurityExceptionを投げる。
インストールされたセキュリティマネージャで属性へのアクセスが許可されている場合は,サブクラスでこのメソッドを上書きしなければならない。
public void
checkPropertyAccess(String key)
throws SecurityExceptionkeyで指定されたシステム属性の値の取得が禁止されている場合,SecurityExceptionを投げる。
Systemの実引数を一つ取るメソッド getProperty(20.18.9)
及び実引数を二つ取るメソッドgetProperty(20.18.10)によって呼び出される。
SecurityManager によって定義されたメソッドcheckPropertiesAccess は,常に SecurityExceptionを投げる。
インストールされたセキュリティマネージャでシステム属性の値へのアクセスが許可されている場合は,サブクラスでこのメソッドを上書きしなければならない。
public void
checkLink(String libname)
throws SecurityExceptionSecurityExceptionを投げる。
実引数として,単純ライブラリ名か,完全ファイル名を取る。
Systemのメソッドload(20.16.13)
及びメソッドloadLibrary(20.16.14)によって呼び出される。
SecurityManagerによって定義されたcheckLinkメソッド は,常に SecurityExceptionを投げる。
インストールされたセキュリティマネージャで動的コードリンクが許可されている場合は,サブクラスでこのメソッドを上書きしなければならない。
public void
checkRead(int fd)
throws SecurityExceptionSecurityExceptionを投げる。
java.io.FileInputStream (22.4.3)のいずれかのコンストラクタによって呼び出される。
SecurityManager によって定義されたメソッドcheckReadは,常に SecurityExceptionを投げる。
インストールされたセキュリティマネージャで既存のファイル記述子からの入力ストリームの生成が許可されている場合は,サブクラスでこのメソッドを上書きしなければならない。
public void
checkRead(String file)
throws SecurityExceptionSecurityExceptionを投げる。
java.io.FileInputStream(22.4.1,22.4.2)の二つのコンストラクタ,
java.io.RandomAccessFile(22.23.1,22.23.2) の二つのコンストラクタ,クラスjava.io.File のメソッド exists (22.24.16),
メソッド canRead(22.24.17),
メソッド isFile(22.24.19),
メソッド isDirectory (22.24.20),
メソッド lastModified (22.24.21),
メソッド length(22.24.22),
実引数を取らないメソッド list(22.24.25),
及び実引数を一つ取るメソッドlist(22.24.26)によって呼び出される。
SecurityManager によって定義されたメソッドcheckRead は,常にSecurityExceptionを投げる。
インストールされたセキュリティマネージャでファイルに対する読み取りのアクセスが許可されている場合,サブクラスでこのメソッドを上書きしなければならない。
public void
checkWrite(int fd)
throws SecurityExceptionSecurityExceptionを投げる。
java.io.FileOutputStream (22.16.3) のいずれかのコンストラクタによって呼び出される。
SecurityManager によって定義されるメソッドcheckWrite は,常に SecurityExceptionを投げる。
インストールされたセキュリティマネージャで既存のファイル記述子からの出力ストリームの生成が許可されている場合,サブクラスでこのメソッドを上書きしなければならない。
public void
checkWrite(String file)
throws SecurityExceptionSecurityExceptionを投げる。
java.io.FileOutputStream (22.16.1,22.16.2)の二つのコンストラクタ,
java.io.RandomAccessFile (22.23.1,22.23.2)の二つのコンストラクタ,
クラス java.io.File のメソッド canWrite (22.24.18),
メソッド mkdir(22.24.23),
及びメソッド renameTo(22.24.27)によって呼び出される。
SecurityManagerによって定義されたメソッドcheckWrite は,常に SecurityExceptionを投げる。
インストールされたセキュリティマネージャでファイルに対する書き込みのアクセスが許可されている場合,サブクラスでこのメソッドを上書きしなければならない。
public void
checkDelete(String file)
throws SecurityExceptionSecurityExceptionを投げる。
java.io.File のメソッド delete(22.24.28)によって呼び出される。
SecurityManagerによって定義されたメソッドcheckDelete は,常に SecurityExceptionを投げる。
インストールされたセキュリティマネージャでファイルの削除が許可されている場合は,サブクラスでこのメソッドを上書きしなければならない。
public void
checkConnect(String host, int port)
throws SecurityExceptionhost の,指定されたportとの接続が禁止されている場合,SecurityExceptionを投げる。
java.net.Socket の二つのコンストラクタ,
クラスjava.net.DatagramSocket のメソッド send及びメソッド receive,
及びクラスjava.net.InetAddress のメソッド getByName及びメソッドgetAllByName
によって呼び出される。
(この仕様書では,これらのメソッドについては,規定していない。The Java Application Programming Interface を参照のこと)。SecurityManager で定義されたメソッドcheckConnect は,常に SecurityExceptionを投げる。
インストールされたセキュリティマネージャでネットワーク接続が許可されている場合,サブクラスでこのメソッドを上書きしなければならない。
public void
checkListen(int port)
throws SecurityExceptionportを感知することが禁止されている場合,SecurityExceptionを投げる。
java.net.DatagramSocketの実引数を一つ取るコンストラクタ及びクラス java.net.ServerSocketのコンストラクタによって呼び出される(この仕様書では,これらのメソッドについては,規定していない。
The Java Application Programming Interface を参照のこと)。
クラス SecurityManager で定義された メソッドcheckListenは,常に SecurityExceptionを投げる。
インストールされたセキュリティマネージャでローカルネットワークポートを感知することが許可されている場合,サブクラスでこのメソッドを上書きしなければならない。
public void
checkAccept(String host, int port)
throws SecurityExceptionhost の指定されたportからの接続を受け付けることが禁止されている場合,SecurityExceptionを投げる。
java.net.ServerSocket の メソッド acceptで呼び出される(この仕様書では,これらのメソッドについては,規定していない。
The Java Application Programming Interface を参照のこと)。
SecurityManager で定義されたメソッドcheckAccept は,常に SecurityExceptionを投げる。
インストールされたセキュリティマネージャでネットワーク接続が許可されている場合,サブクラスでこのメソッドを上書きしなければならない。
public void
checkSetFactory()
throws SecurityExceptionSecurityExceptionを投げる。
java.net.ServerSocketクラスのsetSocketFactoryメソッド
java.net.SocketクラスのsetSocketImplFactoryメソッド
java.net.URLクラスのsetURLStreamHandlerFactoryメソッド
java.net.URLConnectionクラスのsetContentHandlerFactoryメソッド
(この規定書では,これらのメソッドについては,規定していない。
The Java Application Programming Interface を参照のこと)。
SecurityManager で定義されたメソッドcheckSetFactory は,常に SecurityExceptionを投げる。
インストールされたセキュリティマネージャでファクトリのインストールが許可されている場合は,サブクラスでこのメソッドを上書きしなければならない。
public boolean
checkTopLevelWindow()
throws SecurityExceptionSecurityExceptionを投げる。
許可されている場合で,それが実行可能アプレット用ウィンドウであるという警告をウィンドウに表示する場合は,falseを返す。
セキュリティマネージャがウィンドウの生成に対して何も制約していない場合は,trueを返す。
java.awt.Windowのコンストラクタによって呼び出される。
(この仕様書では,これらのメソッドについては,規定していない。The Java Application Programming Interface を参照のこと。)
SecurityManager によって定義されたメソッドcheckTopLevelWindow は,常に falseを返す。
インストールされたセキュリティマネージャがウィンドウの生成を制約していない場合や生成を禁止している場合,サブクラスでこのメソッドを上書きしなければならない。
public void
checkPackageAccess(String packageName)
throws SecurityExceptionSecurityExceptionを投げる。
このメソッドは,Java対応Webブラウザ用である。
SecurityManager で定義されたメソッドcheckPackageAccess は,常に SecurityExceptionを投げる。
インストールされたセキュリティマネージャでアプレットがパッケージにアクセスすることが許可されている場合,サブクラスでこのメソッドを上書きしなければならない。
public void
checkPackageDefinition(String packageName)
throws SecurityExceptionSecurityExceptionを投げる。
このメソッドは,Java対応Webブラウザ用である。
SecurityManager で定義されたメソッドcheckPackageAccess は,常に SecurityExceptionを投げる。
インストールされたセキュリティマネージャでアプレットがクラスを定義することが許可されている場合,サブクラスでこのメソッドを上書きしなければならない。
20.18 クラス
クラス java.lang.SystemSystemには,多数の有用なクラス変数及びクラスメソッドがある。このクラスのインスタンスは,生成できない。
クラスSystemが提供する機能には,標準入力,標準出力,及び標準エラー出力ストリーム,並びに,外部定義“属性”へのアクセス,ファイル及びライブラリのローディングの手段,並びに配列の一部を高速複写するユティリティメソッドがある。
public final class
System {
public static InputStream in;
public static PrintStream out;
public static PrintStream err;
public static SecurityManager getSecurityManager();
public static void setSecurityManager(SecurityManager s)
throws SecurityException;
public static long currentTimeMillis();
public static Properties getProperties()
throws SecurityException;
public static void setProperties(Properties props)
throws SecurityException;
public static String getProperty(String key)
throws SecurityException;
public static String getProperty(String key, String defaults)
throws SecurityException;
public static void exit(int status) throws SecurityException;
public static void gc();
public static void runFinalization();
public static void load(String filename)
throws SecurityException, UnsatisfiedLinkError;
public static void loadLibrary(String libname)
throws SecurityException, UnsatisfiedLinkError;
public static void
arraycopy(Object src, int srcOffset, Object dst, int dstOffset, int length)
throws NullPointerException, ArrayStoreException, IndexOutOfBoundsException;
}
public static InputStream
in;final ではないため,必要な場合は,その値を更新してもよい。
public static PrintStream
out;final ではないので,必要な場合は,その値を更新してもよい。
System.out.println(data)
クラス PrintStream のメソッド println(22.22)を参照のこと。
public static PrintStream
err;out,が一般には,連続して監視することが出来ない,ファイル又はその他の出力先にリダイレクトされている場合でもである。
このフィールドは,finalではないので,必要な場合は,その値を更新してもよい。
public static SecurityManager
getSecurityManager()nullを返す。
public static void
setSecurityManager(SecurityManager s)
throws SecurityExceptionSecurityExceptionを投げる。
そうでなければ,実引数が現在のセキュリティマネージャとして設定される。
実引数がnullであり,かつセキュリティマネージャが設定されていない場合,何も実行せずにそのまま制御を戻す。
public static long
currentTimeMillis()Date(21.3)の規定を参照のこと。
public static Properties
getProperties()
throws SecurityExceptioncheckPropertiesAccessメソッド(20.17.15)を実引数なしで呼び出す。
getPropertyによって使用される現在のシステム属性の集合を,Propertiesオブジェクト(21.6)として,返す。
現在のシステム属性の集合が存在しない場合,システム属性の集合を呼出して初期化する。
このシステム属性の集合は,常に,次のキーの値を含む。
キー名 値
java.version Javaバージョン番号
java.vendor Javaベンダー指定文字列
java.vendor.url JavaベンダーのURL
java.home Javaのインストールディレクトリ
java.class.version Javaのクラスファイル形式のバージョン番号
java.class.path Javaのクラスパス
os.name オペレーティングシステムの名前
os.arch オペレーティングシステムのアーキテクチャ
os.version オペレーティングシステムのバージョン
file.separator ファイルセパレータ (UNIXでは,
セキュリティマネージャが,/)
path.separator パスセパレータ(UNIXでは,:)
line.separator 行セパレータ (UNIXでは,\n)
user.name ユーザのアカウント名
user.home ユーザのホームディレクトリ
user.dir ユーザの現在の作業ディレクトリ
getPropertiesでシステム属性の集合を一括して取得することを許可していない場合でも,getProperty(20.18.9)で各属性を取得することを許可することを選択してもよい。
public static void
setProperties(Properties props)
throws SecurityExceptioncheckPropertiesAccessメソッド (20.17.15)を実引数なしで呼び出す。
getPropertyで使用する現在のシステム属性の集合として設定する。
クラスProperties(21.6)を参照のこと。
実引数がnullの場合,現在のシステム属性の集合は,忘却される。
public static String
getProperty(String key)
throws SecurityExceptioncheckPropertiesAccessメソッド(20.17.16)をkeyを実引数として呼び出す。
getPropertiesメソッド(20.18.7)と同じ方法で,システム属性の集合を生成して初期化する。
keyに対応したシステム属性の値を返す。
そのキーをもつ属性がない場合,nullを返す。
public static String
getProperty(String key, String defaults)
throws SecurityExceptioncheckPropertyAccessメソッド(20.17.16)をkeyを実引数として呼び出す。
getPropertiesメソッド(20.18.7)と同じ方法で,システム属性の集合を生成して初期化する。
keyに対応したシステム属性の値を返す。
そのキーをもつ属性がない場合,実引数defaults を返す。
public static void
exit(int status)
throws SecurityExceptionSystem.exit(n) の呼出しは,次の呼出しと同じとする。Runtime.getRuntime().exit(n)
詳細については,クラス Runtime のメソッドexit(20.16.2)を参照のこと。
public static void
gc()System.gc() の呼出しは,次の呼出しと同じとする。Runtime.getRuntime().gc()
詳細については,クラス Runtime のgcメソッド(20.16.9)を参照のこと。
public static void
runFinalization()finalizeメソッドがまだ実行されていないオブジェクトのfinalizeメソッドの実行を試みる。
メソッド呼出しから制御が戻った時点では,未完了のファイナライズがすべて終了するための努力がなされている。
System.runFinalization()の呼出しは,次の呼出しと同じとする。Runtime.getRuntime().
詳細については,クラス runFinalization()
Runtime のrunFinalizationメソッド (20.16.10)を参照のこと。
public static void
load(String filename)
throws SecurityException, UnsatisfiedLinkErrorSystem.load(name) の呼出しは,次の呼出しと同じとする。Runtime.getRuntime().load(name)
詳細については,クラス Runtime のメソッド load(20.16.13)を参照のこと。
public static void
loadLibrary(String libname)
throws SecurityException, UnsatisfiedLinkErrorSystem.loadLibrary(name)の呼出しは,次の呼出しと同じとする。Runtime.getRuntime().
詳細については,クラス loadLibrary(name)
Runtime のメソッドloadLibrary(20.16.14)を参照のこと。
public static void
arraycopy(Object src, int srcOffset, Object dst, int dstOffset, int length)
throws NullPointerException, ArrayStoreException, IndexOutOfBoundsExceptionscrによって参照される複写元配列の部分配列を,dstによって参照される複写先配列へ複写する。
複写される配列要素は,実引数length と等しい。
複写元配列の srcOffset から srcOffset+length-1までの位置にある要素が,複写先配列のdstOffset から dstOffset+length-1までの位置へ複写される。
src と dstが同じ配列オブジェクトを参照する場合,複写元配列の srcOffsetから srcOffset+length-1 までの位置にある要素が長さlengthの一時配列に複写され,その後,一時配列の内容が複写先配列のdstOffset から dstOffset+length-1位置に複写される。
dst が nullである場合,NullPointerExceptionを投げる。
src が nullである場合,NullPointerExceptionを投げ,複写先配列は,変更されない。
ArrayStoreExceptionを投げ,複写先配列は,変更されない。
そうでなければで,次のいずれかが成り立つ場合,src が配列ではないオブジェクトを参照している。
dst が配列ではないオブジェクトを参照している。
src と dstが異なるプリミティブ型の要素をもつ配列を参照している。
src がプリミティブ型の要素をもつ配列を参照し,実引数dst が参照型の要素をもつ配列を参照している。
src が参照型の要素をもつ配列を参照し,実引数dstがプリミティブ型の要素をもつ配列を参照している。
IndexOutOfBoundsExceptionを投げ,複写先配列は,変更されない。
そうでなければ,複写元配列の srcOffset が負である。
dstOffset が負である。
length が負である。
srcOffset+length が配列 src の長さsrc.length より大きい。
dstOffset+length が配列 dst の長さdst.length より大きい。
srcOffset からsrcOffset+length-1までの構成要素の実際の値に,代入変換によって,複写先配列の構成要素型に変換できないものがある場合,ArrayStoreExceptionを投げる。
ここで,k を lengthより小さく,負ではない整数の最小値とし,src[srcOffset+k]が複写先配列の要素型に変換できないものとする。
例外を投げると,複写元配列のsrcOffset から srcOffset+k-1までの位置にある構成要素は,複写先配列の dstOffset からdstOffset+k-1までの位置に複写されている。
これ以外の位置にある複写先配列の構成要素は,変更されない。(前述の制約により,この段落の内容は,両方の配列の要素が参照型である場合だけに適用される。)
20.19 インタフェース
java.lang.RunnableRunnableインターフェイスは,そのインスタンスを新しいスレッドによって実行しようとするすべてのクラスで実装しなければならない。
該当するクラスに要求されることは,実引数を取らない run メソッドを実装することである。
public interface
Runnable {
public abstract void run();
}
public abstract void
run()runメソッド に求められることは,それは,どのような処理でも実行できることである。
Runnableインターフェイスを実装しているオブジェクトが,スレッド(20.20)を生成するために使用されると,そのスレッドの開始処理は,通常,その新しく開始されたスレッドの中で,そのオブジェクトのrunメソッドを呼び出す。
20.20 クラス
スレッドとは,一つの制御の連続的な流れである。
スレッドオブジェクトを使用すると,マルチスレッドのJavaプログラミングが可能になる。
一つのJava仮想計算機が,インターリーブ又は並行方式によって多数のスレッドを実行できる。
java.lang.ThreadThread”とは,呼び出されたメソッドをもつオブジェクトのこととする。
“そのスレッド“とは,呼び出されたメソッドをもつThreadオブジェクトを表現するスレッドのこととする。
public class
新しいThread implements Runnable {
public final static int MIN_PRIORITY = 1;
public final static int MAX_PRIORITY = 10;
public final static int NORM_PRIORITY = 5;
public Thread();
public Thread(String name);
public Thread(Runnable runObject);
public Thread(Runnable runObject, String name);
public Thread(ThreadGroup group, String name)
throws SecurityException, IllegalThreadStateException;
public Thread(ThreadGroup group, Runnable runObject)
throws SecurityException, IllegalThreadStateException;
public Thread(ThreadGroup group, Runnable runObject, String name)
throws SecurityException, IllegalThreadStateException;
public String toString();
public void checkAccess() throws SecurityException;
public void run();
public void start()
throws IllegalThreadStateException;
public final void stop()
throws SecurityException;
public final void stop(Throwable thr)
throws SecurityException, NullPointerException;
public final void suspend()
throws SecurityException;
public final void resume()
throws SecurityException;
public final String getName();
public final void setName(String name)
throws SecurityException;
public final ThreadGroup getThreadGroup();
public final int getPriority();
public final void setPriority(int newPriority)
throws SecurityException, IllegalArgumentException;
public final boolean isDaemon();
public final void setDaemon(boolean on)
throws SecurityException, IllegalThreadStateException;
public final boolean isAlive();
public int countStackFrames();
public final void join()
throws InterruptedException;
public final void join(long millis)
throws InterruptedException;
public final void join(long millis, int nanos)
throws InterruptedException;
public void interrupt();
public boolean isInterrupted();
public static boolean interrupted();
public static Thread currentThread();
public static int activeCount(); // deprecated
public static int enumerate(Thread tarray[]); // deprecated
public static void dumpStack();
public static void yield();
public static void sleep(long millis)
throws InterruptedException;
public static void sleep(long millis, int nanos)
throws InterruptedException;
public void destroy();
}
Threadオブジェクトが生成された時点では,そのオブジェクトの表すスレッドは,まだアクティブではない。
他のスレッドが,そのThreadオブジェクトのstartメソッド(20.20.14)を呼出したときにアクティブになる。
これは,そのThreadオブジェクトの表すスレッドが,そのThreadオブジェクトのrunメソッド (20.20.13)を呼び出すことによって発生する。
アクティブになったスレッドは,次の五つのいずれかが起こり停止するまで有効になったままとする。
スレッドが消滅したとき,それを表現する,そのrunメソッド呼出しが,そのrunメソッドが正常に制御を戻すことによって正常に終了した。
runメソッド呼出しが,例外を投げて途中終了した。
Threadオブジェクトのstopメソッド(20.20.15)を呼出した(そして,セキュリティマネージャ(20.17.11)が,そのstop処理の実行を承認した)。
Threadオブジェクトのstopメソッドを呼出した(そして,セキュリティマネージャ(20.17.11)が,その stop処理の実行を承認した)。
Runtime のexitメソッド(20.16.2)を呼出した(そして,セキュリティマネージャ(20.17.13)が,そのexit処理の実行を承認した)。
これは,そのJava仮想計算機によって実行中の,exitメソッドを呼出したそのスレッドを実行している,すべてのスレッドを停止させる。
Threadオブジェクトに対して,notifyAllメソッド(20.1.10)を呼び出す。
この事実は,joinメソッド(20.20.28,20.20.29,20.20.30)が正しい操作を行うために重要である。
スレッドは又,消滅したとき,そのスレッドグループから削除される。
いったんスレッドが終了してしまうと,そのスレッドは,有効ではなくなり,再開できなくなる。
Threadオブジェクトのsuspendメソッド(20.20.17)を呼出し,セキュリティマネージャ(20.17.11)が suspendその処理の実行を承認したときとする。
スレッドが再開されるのは,別のスレッドが,そのスレッドを表現するThreadオブジェクトのresumeメソッド(20.20.18)を呼出し,セキュリティマネージャ(20.17.11)が resume処理の実行を承認したときとする。
Threadオブジェクトを新しく生成する場合,新しく生成されたオブジェクトの優先順位は,生成したスレッドと同じ優先順位に初期設定される。
しかし,スレッドT の優先順位は,あるスレッドが T を表現するThreadオブジェクトのsetPriorityメソッドを呼出し,セキュリティマネージャ(20.17.11)が setPriority処理の実行を承認すれば,いつでも変更できる。
ThreadオブジェクトのsetDaemonメソッドを呼出し,セキュリティマネージャ(20.17.11)が setDaemon処理の実行を承認すれば,変更できる。
mainの呼出しによって開始する。
Java仮想計算機は,デーモンではないすべてのスレッドが停止するまで,スレッド実行モデルに従ってスレッドの実行を続行する。
Threadのサブクラスとして宣言する方法とする。
このサブクラスは,クラスThreadのrunメソッドを上書きしなければならない。
そうすることで,サブクラスのインスタンスを生成して開始できる。
次の例は,指定された値を超える素数を計算するスレッドである。
class PrimeThread extends Thread {
次に挙げるコードは,スレッドを生成し,そのスレッドを実行する。
long minPrime;
PrimeThread(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
...
}
}
PrimeThread p = new PrimeThread(143);
p.start();
スレッドを生成するもう一つの方法は,Runnableインタフェースを実装するクラスを宣言することとする。
この場合も,そのクラスでrunメソッドを実装する必要がある。
そうすることで,そのクラスのインスタンスを生成し,Threadを生成するためにそれを使用して,開始できる。
同じ例を,この方法で記述すると,次のようになる。
class PrimeRun implements Runnable {
次に挙げるコードは,スレッドを生成し,そのスレッドの実行を開始する。
long minPrime;
PrimeRun(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
...
}
}
PrimeRun p = new PrimeRun(143);
new Thread(p).start();
すべてのスレッドは,識別のためのStringの名前をもつ。
複数のスレッドが,同じ名前をもつことができる。
スレッドの生成時に,名前を指定しないと,新しい名前が生成される。
checkAccessメソッド(20.21.4の承認が必要である。
実際の承認は,セキュリティマネージャ(20.17.11)が行う。
public final static int
MIN_PRIORITY = 1;1とする。
public final static int
MAX_PRIORITY = 10;10 とする。
public final static int
NORM_PRIORITY = 5;5 とする。
public
Thread()Threadオブジェクトを,別の実行オブジェクトを何ももたず,新しく生成された名前をもち,その新しいスレッドを生成しているスレッドと同じスレッドグループに属するように,初期化する。
this(null, null, gname) (20.20.10)と同じ効果をもつ。
ここで,gnameは,新しく生成された名前とする。
自動的に生成された名前の形式は,"Thread-"+n (n は,整数)とする。
public
Thread(String name)Threadオブジェクトを,別の実行オブジェクトを何ももたず,実引数 nameで指定された名前をもち,その新しいスレッドを生成しているスレッドと同じスレッドグループに属するように,初期化する。
this(null, null, name) (20.20.10)と同じ効果をもつ。
public
Thread(Runnable runObject)Threadオブジェクトを,実引数に指定された runObjectを別の実行オブジェクトとしてもち,新しく生成された名前をもち,その新しいスレッドを生成しているスレッドと同じスレッドグループに属するように,初期化する。
this(null, runObject, gname) (20.20.10)と同じ効果をもつ。ここで,gnameは,新しく生成される名前とする。
自動的に生成される名前の形式は,"Thread-"+n (n は,整数)とする。
public
Thread(Runnable runObject, String name)Threadオブジェクトを,実引数で指定された runObjectを別の実行オブジェクトとしてもち,実引数で指定された名前をもち,その新しいスレッドを生成しているスレッドと同じスレッドグループに属するように,初期化する。
this(null, runObject, name) (20.20.10)と同じ効果をもつ。
public
Thread(ThreadGroup group, String name)
throws SecurityException, IllegalThreadStateExceptiongroup が nullでなければ,実引数なしでそのスレッドグループのcheckAccessメソッド(20.21.4)を呼び出す。
Threadオブジェクトを,別の実行オブジェクトをもたず,実引数で指定された名前をもち,groupで参照されるスレッドグループに属するように,初期化する(ただし,groupがnullの場合,新しいスレッドは,その新しいスレッドを生成しているスレッドと同じスレッドグループに属する)。
groupが,destroyメソッド (20.21.11)によって破棄されたThreadGroupの場合,IllegalThreadStateExceptionを投げる。
Thread(group, null,name) (20.20.10)と同じ効果をもつ。
public
Thread(ThreadGroup group, Runnable runObject)
throws SecurityException, IllegalThreadStateExceptiongroup が nullでなければ,実引数なしでそのスレッドグループのcheckAccessメソッド(20.21.4)を呼び出す。
Threadオブジェクトを,実引数で指定されたrunObjectを別の実行オブジェクトとしてもち,新しく生成された名前をもち,groupで参照されるスレッドグループに属するように,初期化する(ただし,groupがnullの場合,新しいスレッドは,新しいスレッドを生成しているスレッドと同じスレッドグループに属する)。
group が,destroyメソッド (20.21.11)によって破棄されたThreadGroupの場合,IllegalThreadStateExceptionを投げる。
this(group, runObject, gname) (20.20.10)と同じ効果をもつ。
ここで,gnameは,新しく生成される名前とする。
自動的に生成される名前の形式は,"Thread-"+n (n は,整数)とする。
public
Thread(ThreadGroup group, Runnable runObject, String name)
throws SecurityException, IllegalThreadStateExceptiongroup が nullでなければ,実引数なしでそのスレッドグループのcheckAccessメソッド(20.21.4)を呼び出す。
この結果,SecurityExceptionを投げることもある。
Threadオブジェクトを,実引数で指定された runObjectを別の実行オブジェクトとしてもち,実引数 nameで指定された名前をもち,groupで参照されるスレッドグループに属するように,初期化する(ただし,groupがnull の場合,新しいスレッドは,新しいスレッドを生成しているスレッドと同じスレッドグループに属する)。
group が,destroyメソッド (20.21.11)によって破棄されたThreadGroupの場合,IllegalThreadStateExceptionを投げる。
setPriority(20.20.23)を使用すると,優先順位を新しい値に変更できる。
setDaemon(20.20.25)を使用すると,スレッドをデーモンとするかどうかを変更できる。
public String
toString()
上記のすべてのリテラル文字は,UnicodeのASCII部分集合に属する。
"Thread["
","
","
"]"
Object のメソッド toString(20.1.2)を上書きする。
public void
checkAccess() throws SecurityExceptioncheckAccessメソッド(20.17.11)を,このThreadオブジェクトを実引数として呼び出す。
この結果,SecurityExceptionを投げることもある。
stopメソッド(20.20.15),
実引数を一つ取るstopメソッド(20.20.16),
suspendメソッド(20.20.17),
resumeメソッド(20.20.18),
setNameメソッド(20.20.20),
setPriorityメソッド(20.20.23),
及びsetDaemonメソッド(20.20.25)によって呼び出される。
public void
run()Thread のrunメソッド は,別の実行オブジェクトのrunメソッド が存在すれば,単にそれを呼び出すだけとする。
存在しなければ,何も実行しない。
public void
start()
throws IllegalThreadStateExceptionThreadオブジェクト のrunメソッド を呼び出す。
その結果,二つのスレッド---つまり,現在のスレッド(startメソッドの呼出しから戻ったもの)及びこのThreadオブジェクト によって表現されるスレッド(そのrunメソッドを実行する)----が並列に実行される。
public final void
stop()
throws SecurityExceptionThreadオブジェクトのcheckAccessメソッド(20.17.11)を実引数なしで呼び出す。
この結果,現在のスレッドの中にSecurityExceptionが投げることがある。
ThreadDeathオブジェクトを投げる。
これを実行するために,このスレッドは,一時停止していれば再開され,及び休眠していれば起こされる。
ThreadDeathの捕捉を試みてはならない(ThreadDeath例外を投げるプロセスは,スレッドが正式に消滅する前に try 文の finally 節を実行することに注意のこと)。
catch節がThreadDeathオブジェクトを捕捉する場合は,スレッドが実際に消滅するように,必ずそのThreadDeathオブジェクトを再度投げることが重要である。
捕捉されない例外に反応するトップレベルのエラーハンドラは,捕捉されない例外がThreadDeathのインスタンスである場合,メッセージは,出力せず,その他のシグナルを発行せず,ユーザにも通知しない。
public final void
stop(Throwable thr)
throws SecurityException, NullPointerExceptionThreadオブジェクトのcheckAccessメソッド(20.20.12)を実引数なしで呼び出す。
この結果,現在のスレッドの中にSecurityException を投げることがある。
thr が null の場合,(現在のスレッド)でNullPointerException を投げる。
Throwableオブジェクトの thrを投げる。
これを実行するために,このスレッドは,一時停止していれば再開され,及び休眠していれば起こされる。
これは,普通は,実行しない処理である。
通常は,実引数を取らないstopメソッド(20.20.15)を使用すべきである。
public final void
suspend()
throws SecurityExceptionThreadオブジェクトのcheckAccessメソッド(20.20.12)を実引数なしで呼び出す。
この結果,現在のスレッドの中にSecurityException を投げることがある。
resume を呼び出せば,再開できる。
public final void
resume()
throws SecurityExceptionThreadオブジェクトのcheckAccessメソッド(20.20.12)を実引数なしで呼び出す。
この結果,現在のスレッドの中にSecurityException を投げることがある。
suspend を呼び出せば,一時停止できる。
public final String
getName()Threadオブジェクトの現在の名前を Stringとして返す。
public final void
setName(String name)
throws SecurityExceptionThreadオブジェクトのcheckAccessメソッド(20.20.12)を実引数なしで呼び出す。
この結果,現在のスレッドの中にSecurityException を投げることがある。
Threadオブジェクトの名前を,実引数 nameと等しくなるように変更する。
public final ThreadGroup
getThreadGroup()ThreadGroupオブジェクトへの参照を返す。
このスレッドが消滅している(メソッドstopによって終了している)場合,null を返す。
public final int
getPriority()public final void
setPriority(int newPriority)
throws SecurityException, IllegalArgumentExceptionThreadオブジェクトのcheckAccessメソッド(20.20.12)を実引数なしで呼び出す。
その結果,現在のスレッドの中にSecurityException を投げることがある。
newPriority が MIN_PRIORITY (20.20.1)より小さい又はMAX_PRIORITY
(20.20.2)より大きい場合,IllegalArgumentExceptionを投げる。
Threadオブジェクトの優先順位を,指定した newPriority 及びそのスレッドのスレッドグループ(20.20.21)に許された最高優先順位(20.21.12)のうち,小さい方に設定する。
public final boolean
isDaemon()true if and only if this thread is marked as a
daemon thread.
このスレッドがデーモンスレッドとしてマークされている場合,またその場合にだけtrue を返す。
public final void
setDaemon(boolean on)
throws SecurityException, IllegalThreadStateExceptionThreadオブジェクトのcheckAccessメソッド(20.20.12)を実引数なしで呼び出す。
その結果,現在のスレッドの中にSecurityException を投げることがある。
IllegalThreadStateExceptionを投げる。
そうでなければ,実引数が trueであれば,このスレッドをデーモンスレッドであるとマークし,実引数がfalseであれば,デーモンスレッドでないとマークする。
public final boolean
isAlive()trueを返す。
public int
countStackFrames()public final void
join() throws InterruptedExceptionObject の waitメソッド(20.1.6)を使用して)このスレッドが消滅するまで現在のスレッドを待機させる。
InterruptedExceptionを投げる。
public final void
join(long millis)
throws InterruptedExceptionObject のwaitメソッド(20.1.7)を使用して)このスレッドが消滅するか又は,指定された実時間が経過するまで現在のスレッドを待機させる。
millisで指定する。
ただし,millisがゼロの場合は,時間を考慮せず,このメソッドは,このスレッドが消滅するまで待機する。
InterruptedExceptionを投げる。
public final void
join(long millis, int nanos)
throws InterruptedExceptionObject のwaitメソッド(20.1.8)を使用して)このスレッドが消滅するか又は,指定された実時間が経過するまで現在のスレッドを待機させる。
ナノ秒単位で表す点を除き,このメソッドの動作は,実引数を一つ取るメソッド1000000*millis+nanos
join(20.20.29)と同じとする。
特に,join(0,0)は, join(0) と同じとする。
InterruptedExceptionを投げる。
public void
interrupt()InterruptedExceptionを投げる。
public boolean
isInterrupted()trueを返す。
public static boolean
interrupted()trueを返す。
public static Thread
currentThread()public static int
activeCount()Threads.currentThread().getThreadGroup().activeCount()
[このメソッドは,バージョン1.1のJavaが提供された後は,使用するべきでない。代わりに,次の式を使用する。
Threads.currentThread().getThreadGroup().allThreadsCount()
クラスThreadGroup のメソッド allThreadsCountを参照のこと。]
public static int
enumerate(Thread tarray[])Threadオブジェクトを配列 tarrayに格納する。
実際に配列に入ったスレッドの数を返す。
この値を nとすると,スレッドは, tarray の要素 0 からn-1 に入る。
スレッドの数が tarray の長さを超えると,スレッド群から tarray.length個を任意に選択して,配列 tarray を満たす。
Threads.currentThread().getThreadGroup().allThreads()
クラス ThreadGroup のメソッド allThreadsを参照のこと。]
public static void
dumpStack()new Exception("Stack trace").printStackTrace()
クラス Throwable のメソッド printStackTrace(20.22.6)を参照のこと。
public static void
yield()public static void
sleep(long millis)
throws InterruptedExceptionmillis で指定する。
InterruptedExceptionを投げる。
public static void
sleep(long millis, int nanos)
throws InterruptedException
ナノ秒単位で表す点を除き,このメソッドの動作は,実引数を一つ取るメソッド1000000*millis+nanos
sleep(20.20.39)と同じとする。特に,sleep(0,0)は,sleep(0)と同じとする。
InterruptedExceptionを投げる。
public void destroy()
throws SecurityExceptionThreadオブジェクトのcheckAccessメソッド(20.20.12)を実引数なしで呼び出す。
この結果,現在のスレッドの中にSecurityException を投げることがある。
20.21 クラス
スレッドグループは,スレッド及びスレッドグループの集合とする。
すべてのスレッドは,ある一つのスレッドグループに属している。
また,すべてのスレッドグループは,“システムスレッドグループ”を除き,ある他のスレッドグループに属している。
つまり,スレッドグループは,システムスレッドグループをルートとする木構造になっている。
java.lang.ThreadGrouppublic class
すべてのスレッドグループは,最高優先順位(maximum priority)をもつ。
あるスレッドの優先順位(20.20.23)は,そのスレッドグループの最高優先順位より高く設定することはできない。
ThreadGroup {
public ThreadGroup(String name)
throws SecurityException;
public ThreadGroup(ThreadGroup parent, String name)
throws NullPointerExpression, SecurityException,
IllegalThreadStateException;
public String toString();
public final void checkAccess();
public final String getName();
public final ThreadGroup getParent();
public final boolean parentOf(ThreadGroup g);
public final void stop()
throws SecurityException;
public final void suspend()
throws SecurityException;
public final void resume()
throws SecurityException;
public final void destroy()
throws SecurityException, IllegalThreadStateException;
public final int getMaxPriority();
public final void setMaxPriority(int newMaxPriority)
throws SecurityException, IllegalArgumentException;
public final boolean isDaemon();
public final void setDaemon(boolean daemon)
throws SecurityException;
public int threadsCount();
public int allThreadsCount();
public int groupsCount();
public int allGroupsCount();
public Thread[] threads();
public Thread[] allThreads();
public ThreadGroup[] groups();
public ThreadGroup[] allGroups();
public int activeCount(); // deprecated
public int activeGroupCount(); // deprecated
public int enumerate(Thread list[]); // deprecated
public int enumerate(Thread list[], // deprecated
boolean recurse);
public int enumerate(ThreadGroup list[]); // deprecated
public int enumerate(ThreadGroup list[], // deprecated
boolean recurse);
public void list();
public void uncaughtException(Thread t, Throwable e);
}
setDaemonメソッドを呼び出すことによって,いつでも変更することができる(ただし,セキュリティマネージャ(20.17.12)が setDaemonの実行を承認した場合)。
Stringの名前をもつ。
複数のスレッドグループが,同じ名前をもっていてもかまわない。
checkAccessメソッド(20.21.4)の承認が必要である。
実際の承認は,セキュリティマネージャ(20.17.11)が行なう。
public
ThreadGroup(String name)
throws SecurityExceptioncheckAccessメソッド (20.21.4)を実引数なしで呼び出す。
ThreadGroupオブジェクトを,指定されたnameをその名前とし,新しいスレッドグループを生成しているスレッドと同じスレッドグループに属するるように,初期化する。
this(Thread.currentThread().getThreadGroup(), name) (20.21.2)と同じ効果をもつ。
public
ThreadGroup(ThreadGroup parent, String name)
throws NullPointerExpression, SecurityException, IllegalThreadStateExceptioncheckAccessメソッド (20.21.4)を実引数なしで呼び出す。
parent が nullである場合,NullPointerExpressionを投げる。
parent がdestroyメソッド (20.21.11)によって破棄されたスレッドグループである場合,IllegalThreadStateExceptionを投げる。
ThreadGroupオブジェクトを,指定されたname をその名前とし,parentで表現されるスレッドグループに属するように,初期化する。
parentと同じ最高優先順位に設定される。
メソッド setMaxPriority(20.21.13)を使用すると,最高優先順位をこれより低い値に変更できる。
parentがデーモンスレッドグループである場合にだけ,初期設定でデーモンスレッドグループとして設定される。
メソッドsetDaemon(20.21.15)を使用して,あるスレッドグループを,デーモンスレッドグループとするかどうかを変更することができる。
public String
toString()
上記のすべてのリテラル文字は,UnicodeのASCII部分集合に属する。
"[name="
",maxpri="
"]"
Object のtoStringメソッド(20.1.2)を上書きする。
public final void
checkAccess()checkAccessメソッド(20.17.12)をこのThreadGroupオブジェクトを実引数として呼び出す。
この結果,現在のスレッドの中にSecurityExceptionを投げることがある。
stop(20.21.8),
メソッドsuspend(20.21.9),
メソッドresume(20.21.10),
メソッドdestroy(20.21.11),
メソッドsetMaxPriority(20.21.13),
及びsetDaemonメソッド(20.21.15)によって呼び出される。
public final String
getName()ThreadGroupオブジェクトの現在の名前を Stringとして返す。
public final ThreadGroup
getParent()ThreadGroupオブジェクトを返す。
このスレッドグループが,スレッドグループ階層のルートにあるシステムスレッドグループである場合,nullを返す。
public final boolean
parentOf(ThreadGroup g)g自身であるか又は,このメソッドを gの親であるスレッドグループに対して適用したとき trueを返す場合にだけ,true を返す。
別の言い方をすれば,このメソッドは,このスレッドグループがgの祖先であるか又は,たぶんg自身であるかどうかを返す。
public final void
stop() throws SecurityExceptioncheckAccessメソッド(20.21.4)を実引数なしで呼び出す。
この結果,現在のスレッドの中にSecurityExceptionを投げることがある。
ThreadGroup及びそのすべてのサブグループに属している,すべての Threadを終了する。
より正確には,この ThreadGroupに属しているすべての ThreadGroup 及びすべての Thread に対して,メソッド stop(20.20.15)を呼び出す。
public final void
suspend() throws SecurityExceptionThreadGroupオブジェクトのcheckAccessメソッド(20.21.4)を実引数なしで呼び出す。
この結果,現在のスレッドの中にSecurityExceptionを投げることがある。
ThreadGroup に属しているすべての ThreadGroup及びすべての Thread に対して,メソッド suspend(20.20.17)を呼び出す。
public final void
resume() throws SecurityExceptionThreadGroupオブジェクトのcheckAccessメソッド(20.21.4)を実引数なしで呼び出す。
この結果,現在のスレッドの中にSecurityExceptionを投げることがある。
ThreadGroup に属しているすべての ThreadGroup及びすべての Thread に対して,メソッド resume(20.20.17)を呼び出す。
public final void
destroy()
throws SecurityException, IllegalThreadStateExceptionThreadGroupオブジェクトのcheckAccessメソッド(20.21.4)を実引数なしで呼び出す。
この結果,現在のスレッドの中にSecurityExceptionを投げることがある。
IllegalThreadStateExceptionを投げる。
そうでなければ,このスレッドグループに属しているすべてのスレッドグループに対して,このメソッドを再帰的に呼び出し,このスレッドグループを,その親スレッドグループから削除する。
public final int
getMaxPriority()ThreadGroupオブジェクトの,現在の最高優先順位を返す。
public final void
setMaxPriority(int newMaxPriority)
throws SecurityException, IllegalArgumentExceptionThreadGroupオブジェクトのcheckAccessメソッド(20.21.4)を実引数なしで呼び出す。
この結果,現在のスレッドの中にSecurityExceptionを投げることがある。
newMaxPriority が MIN_PRIORITY (20.20.1)より小さいか又は,MAX_PRIORITY
(20.20.2)より大きい場合,IllegalArgumentException を投げる。
ThreadGroupオブジェクトの優先順位は,実引数で指定された newMaxPriority及び,このスレッドグループの親に許された最高優先順位(20.21.12)のうち,小さい方に設定される。
(このスレッドグループが,親をもたないシステムスレッドグループであれば,それの最高優先順位を,そのままnewMaxPriorityに設定する。)
その後,このスレッドグループに属しているすべてのスレッドグループに対して,newMaxPriorityを実引数として,このメソッドを再帰的に呼び出す。
public final boolean
isDaemon()trueを返す。
public final void
setDaemon(boolean daemon)
throws SecurityExceptionThreadGroupオブジェクトのcheckAccessメソッド(20.21.4)を実引数なしで呼び出す。
この結果,現在のスレッドの中にSecurityExceptionを投げることがある。
trueであれば,デーモンスレッドグループとして設定し,falseであれば,デーモンスレッドグループではないとして設定する。
public int
threadsCount()public int
allThreadsCount() public int
groupsCount()public int
allGroupsCount()public Thread[]
threads()Threadオブジェクトを格納して返す。
public Thread[]
allThreads()Threadオブジェクトを格納して返す。
public ThreadGroup[]
groups()ThreadGroupオブジェクトを格納して返す。
public ThreadGroup[]
allGroups()ThreadGroupオブジェクトを格納して返す。
public int
activeCount()allThreadsCountを使用すること。]
public int
activeGroupCount()allGroupsCountを使用すること。]
public int
enumerate(Thread list[])allThreadsを使用すること。]
public int
enumerate(Thread list[], boolean recurse)thread 又はメソッド allThreads を使用すること。]
public int
enumerate(ThreadGroup list[])allGroupsを使用すること。]
public int
enumerate(ThreadGroup list[], boolean recurse)groups又はメソッド allGroups を使用すること。]
public void
list()System.out (20.18.2)に出力する。
これは,デバッグ用のユティリティである。
toString表現の,一つのスレッド(20.20.11)又は一つのスレッドグループ(20.21.3)を含む。
toString表現であり,字下げはない。
2行目以降は,再帰規則に従って生成される。
つまり,ある行にスレッドグループ G を n 個の空白で字下げして出力し,その直後に,G に直接属しているスレッドを1行に一つずつ
個の空白で字下げして出力する,さらに,その直後に G に直接属しているスレッドグループを1行に一つずつ
個の空白で字下げして出力する。これを,再帰的に繰り返す。
public void
uncaughtException(Thread t, Throwable e)uncaughtExceptionは,このスレッドグループに直接属しているスレッドが,そのスレッドの中で捕捉されない例外を投げたために消滅するときに,呼び出される。
実引数は,問題となっているスレッドのThreadオブジェクト及び投げられたThrowableオブジェクトとする。
その後,uncaughtExceptionメソッドは,あらゆる適切な動作を取ることができる。
uncaughtExceptionは,例外を捕捉できなかったスレッドで呼び出す,したがって,tは,現在のスレッドとする。
uncaughtExceptionの呼出しは,スレッドが消滅する前に実行する最後の動作とする。
uncaughtExceptionの呼出し自身が,(捕捉されない)例外に終わると,呼出しを無視してスレッドは,そのまま消滅する。
ThreadGroup に定義してある,メソッドuncaughtExceptionは,二つの動作のいずれかを実行する。
このスレッドグループが,親スレッドグループをもつならば,このメソッドが,その親スレッドグループに対して,同じ実引数で呼び出される。
このスレッドグループが,システムスレッドグループ(つまり,親がない)であり,例外e が ThreadDeath (20.22)のインスタンスでなければ,eに対するスタックトレース(20.22.6)を System.err フィールド(20.18.3)の値であるエラー出力ストリームに出力する。
ThreadGroup のサブクラスでは,uncaughtExceptionメソッドを上書きしてもよい。
20.22 クラス
java.lang.Throwable 及びそのサブクラスthrow 文(14.16)は,クラスThrowable及びそのサブクラスのインスタンスだけで許されている。
二つのサブクラスError 及び Exceptionのインスタンスは,慣例的に,例外的な状況が発生したことを示すために使用される。
一般的に,これらのインスタンスは,関連する情報(スタックトレースデータなど)を入れるために,例外的な状況が発生したコンテキストの中で新しく生成される。
java.langに,あらかじめ定義してあるすべての例外クラスの階層的な関係を示している。
慣例的に,クラス Throwable
Error
LinkageError
ClassCircularityError
ClassFormatError
ExceptionInInitializerError
IncompatibleClassChangeError
AbstractMethodError
IllegalAccessError
InstantiationError
NoSuchFieldError
NoSuchMethodError
NoClassDefFoundError
UnsatisfiedLinkError
VerifyError
VirtualMachineError
InternalError
OutOfMemoryError
StackOverflowError
UnknownError
ThreadDeath
Exception
ClassNotFoundException
CloneNotSupportedException
IllegalAccessException
InstantiationException
InterruptedException
RuntimeException
ArithmeticException
ArrayStoreException
ClassCastException
IllegalArgumentException
IllegalThreadStateException
NumberFormatException
IllegalMonitorStateException
IndexOutOfBoundsException
NegativeArraySizeException
NullPointerException
SecurityException
Throwable及びそのすべてのサブクラスには,二つのコンストラクタがあり,一方のコンストラクタは,実引数を取らず,もう一方のコンストラクタは,エラーメッセージの生成に使用できるStringを実引数として取る。
これは,ExceptionInInitializerErrorを除き,上記のすべてのクラスに当てはまる。
これらの定義済みクラスには,コンストラクタ以外に新しい内容はなく,クラスThrowable からメソッドを継承する。
public class
Throwable {
public Throwable();
public Throwable(String message);
public String toString();
public String getMessage();
public Throwable fillInStackTrace();
public void printStackTrace();
public void printStackTrace(java.io.PrintStream s);
}
public
Throwable()Throwableオブジェクトを新しく生成し,そのエラーメッセージ文字列を nullとして初期化する。
また,このオブジェクトに対して,メソッドfillInStackTrace(20.22.5)を呼び出す。
public
Throwable(String message)Throwableオブジェクトを,エラーメッセージの文字列s への参照を保存することによって初期化し,後でgetMessageメソッド(20.22.3)で,取出しできるようにする。
また,このオブジェクトに対して,メソッドfillInStackTrace(20.22.5)を呼び出す。
public String
getMessage()Throwableオブジェクトを,エラーメッセージ文字列(20.22.2)付きで生成したならば,その文字列への参照を返す。
Throwableオブジェクトを,エラーメッセージ文字列(20.22.1)なしで生成したならば,null を返す。
public String
toString()Throwableオブジェクトを,エラーメッセージ文字列(20.22.2)付きで生成したならば,次の三つの文字列を連結した文字列を返す。
この": " (コロンと空白)
getMessageメソッド(20.22.3)の戻り値
Throwableオブジェクトを,エラーメッセージ文字列なしで生成したならば(20.22.1),このオブジェクトの実際のクラスの名前を返す。
public Throwable
fillInStackTrace()Throwableオブジェクト内に,現在のスレッドに対する,スタックフレームの現在の状態に関する情報を記録する。
public void
printStackTrace()System.err フィールド(20.18.3)の値であるエラー出力ストリームに,このThrowableオブジェクトのスタックトレースを出力する。
出力の1行目には,このオブジェクトに対するtoStringメソッド(20.22.4)の戻り値を出力する。
残りの行には,メソッドfillInStackTrace(20.22.5)によって,それまでに記録されたデータを出力する。
この情報の書式は,実装によって異なるが,次の例が,一般的である。
java.lang.NullPointerException
at MyClass.mash(MyClass.java:9)
at MyClass.crunch(MyClass.java:6)
at MyClass.main(MyClass.java:3)
この例は,次のプログラムを実行した結果である。
class MyClass {
public static void main(String[] argv) {
crunch(null);
}
static void crunch(int[] a) {
mash(a);
}
static void mash(int[] b) {
System.out.println(b[0]);
}
20.23 クラス
java.lang.ExceptionInInitializerErrorExceptionInInitializerError は,静的初期化子又はstatic 変数(12.4.2)の初期化子の評価中に発生した例外を示すために投げられる。
public class
ExceptionInInitializerError
extends RuntimeException {
public ExceptionInInitializerError();
public ExceptionInInitializerError(String s);
public ExceptionInInitializerError(Throwable thrown);
public Throwable getException();
}
public
ExceptionInInitializerError()ExceptionInInitializerErrorを新しく生成し,エラーメッセージ文字列としてnullをもち,保存されたThrowableオブジェクト をもたないように,初期化する。
public
ExceptionInInitializerError(String s)ExceptionInInitializerErrorを,エラーメッセージの文字列s への参照を保存することによって初期化し,後でgetMessageメソッド(20.22.3)で,取出しできるようにする。
生成されたオブジェクトには,保存されたThrowableオブジェクトはない。
public
ExceptionInInitializerError(Throwable thrown)ExceptionInInitializerErrorを,Throwableオブジェクトである thrownへの参照を保存することによって初期化し,後でgetExceptionメソッド(20.23.4)で,取出しできるようにする。
エラーメッセージ文字列は,nullに設定される。
public Throwable
getException(Throwable thrown)ExceptionInInitializerErrorの,保存されたThrowableオブジェクトを返す。
この ExceptionInInitializerErrorが,保存されたThrowableオブジェクトをもたなければ,null を返す。