パッケージ 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
で定義されるクラスの階層構造を示す。
Object
20.1
interface
Cloneable
20.2
Class
20.3
Boolean
20.4
Character
20.5
Number
20.6
Integer
20.7
Long
20.8
Float
20.9
Double
20.10
Math
20.11
String
20.12
StringBuffer
20.13
ClassLoader
20.14
Process
20.15
Runtime
20.16
SecurityManager
20.17
System
20.18
interface Runnable
20.19
Thread
20.20
ThreadGroup
20.21
Throwable
20.22
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
java.lang.Object
Object
は,クラス階層の唯一のルートとする。配列を含むすべてのオブジェクトは クラス
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規格に従って,二つの実引数の剰余を計算する。剰余の値は,
と等しくなる。ここで,
は正確な商
に最も近い整数でとする。二つの整数が同等に
;に近い場合,偶数の方が n
になる。剰余がゼロの場合の符号は,最初の実引数の符号と同じになる。
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.Class
Class
のインスタンスは,実行中の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.Boolean
Boolean
のオブジェクトは,型 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.Character
Character
のオブジェクトは 型 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.Number
Number
には,サブクラスとして 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.Integer
public 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.Long
public 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.Float
public 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"
を返す。
'.'
(\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.Double
public 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"
を返す。
'.'
(\u002E
),及び m
の小数部を表す一つ以上の10進数でmを表現する。
'.'
(\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.Math
Math
は、役に立つ基本数値定数とメソッドがある。
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)
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.String
String
のオブジェクトは,一度作成すると変更できない。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
IndexOutOfBoundsException
String
オブジェクト
によって表現される文字列から,実引数 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
を返す。
prefix
null
である場合,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
を返す。
str
null
である場合,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
IndexOutOfBoundsException
String
オブジェクト によって表される部分文字列を表現するString
オブジェクト を新しく作成し,それを返す。この部分文字列は,位置 beginIndex
の文字で始まり,文字列の末尾までとする。
beginIndex
が負である,又はこのString
オブジェクト の長さより大きい場合,IndexOutOfBoundsException
が投げられる。
"unhappy".substring(2) は "happy" を返す
"Harbison".substring(3) は "bison" を返す
"emptiness".substring(9) は "" (空文字列) を返すpublic String
substring
(int beginIndex, int endIndex)
throws
IndexOutOfBoundsException
String
オブジェクト
によって表される部分文字列を表現する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"を返す
str
null
である場合,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.StringBuffer
public 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 IndexOutOfBoundsException
index
で指定された文字を返す。
配列のインデクスと同じように,文字列の先頭の文字のインデクスは,0
,次の文字のインデクスは,1
とする。
index
が,負又は文字列バッファの現在の長さ(20.13.5)よりも小さくない場合,IndexOutOfBoundsException
を投げる。
public void
setCharAt
(int index, char ch)
throws IndexOutOfBoundsException
index
に文字ch
を含むことを除いて,古い文字列と同一の新しい文字列を表現するように変更される。
index
が,負又は文字列バッファの現在の長さ(20.13.5)よりも小さくない場合,IndexOutOfBoundsException
を投げる。
public void
getChars
(int srcBegin, int srcEnd, char[] dst, int dstBegin)
throws NullPointerException, IndexOutOfBoundsException
StringBuffer
オブジェクトから,配列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 IndexOutOfBoundsException
String.valueOf
(20.12.38)によって変換したかのように,文字列に変換し,その文字列の文字を,このStringBuffer
オブジェクトの中のoffset
で示される位置に,insert
(20.13.23)する。
このStringBuffer
オブジェクトへの参照を返す。
public StringBuffer
insert
(int offset, String str)
throws IndexOutOfBoundsException
String
実引数の文字を,その順に文字列バッファの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,
IndexOutOfBoundsException
ensureCapacity
(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 IndexOutOfBoundsException
String.valueOf
(20.12.41)によって変換したかのように,文字列に変換し,その文字列の文字を,このStringBuffer
オブジェクトのoffset
で示される位置にinsert
(20.13.23)する。
このStringBuffer
オブジェクトへの参照を返す。
public StringBuffer
insert
(int offset, char c)
throws IndexOutOfBoundsException
offset
で示される位置に挿入する。この文字列バッファの長さは,一つだけ増加する。
最初に,メソッドensureCapacity
(20.13.7)を,この新しい文字列バッファを実引数として呼び出す。
このStringBuffer
オブジェクトへの参照を返す。
String.valueOf
(20.12.42)によって変換したかのように,文字列に変換し,その文字列の文字を,このStringBuffer
オブジェクトのoffset
で示される位置にinsert
(20.13.23)するのと同じものとする。
public StringBuffer
insert
(int offset, int i)
throws IndexOutOfBoundsException
String.valueOf
(20.12.43)によって変換したかのように,文字列に変換し,その文字列の文字を,このStringBuffer
オブジェクトのoffset
で示される位置にinsert
(20.13.23)する。
このStringBuffer
オブジェクトへの参照を返す。
public StringBuffer
insert
(int offset, long l)
throws IndexOutOfBoundsException
String.valueOf
(20.12.44)によって変換したかのように,文字列に変換し,その文字列の文字を,このStringBuffer
オブジェクトのoffset
で示される位置にinsert
(20.13.23)する。
このStringBuffer
オブジェクトへの参照を返す。
public StringBuffer
insert
(int offset, float f)
throws IndexOutOfBoundsException
String.valueOf
(20.12.45)によって変換したかのように,文字列に変換し,その文字列の文字を,このオブジェクトStringBuffer
のoffset
で示される位置にinsert
(20.13.23)する。
このStringBuffer
オブジェクトへの参照を返す。
public StringBuffer
insert
(int offset, double d)
throws IndexOutOfBoundsException
String.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.ClassLoader
Class
オブジェクトには,それを定義した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.Process
Runtime
のメソッド 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.Runtime
public 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.SecurityManager
public 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.System
System
には,多数の有用なクラス変数及びクラスメソッドがある。このクラスのインスタンスは,生成できない。
クラス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.Runnable
Runnable
インターフェイスは,そのインスタンスを新しいスレッドによって実行しようとするすべてのクラスで実装しなければならない。
該当するクラスに要求されることは,実引数を取らない run
メソッドを実装することである。
public interface
Runnable
{
public abstract void run
();
}
public abstract void
run
()run
メソッド に求められることは,それは,どのような処理でも実行できることである。
Runnable
インターフェイスを実装しているオブジェクトが,スレッド(20.20)を生成するために使用されると,そのスレッドの開始処理は,通常,その新しく開始されたスレッドの中で,そのオブジェクトのrun
メソッドを呼び出す。
20.20 クラス
スレッドとは,一つの制御の連続的な流れである。
スレッドオブジェクトを使用すると,マルチスレッドのJavaプログラミングが可能になる。
一つのJava仮想計算機が,インターリーブ又は並行方式によって多数のスレッドを実行できる。
java.lang.Thread
Thread
”とは,呼び出されたメソッドをもつオブジェクトのこととする。
“そのスレッド“とは,呼び出されたメソッドをもつ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, IllegalThreadStateException
group
が 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, IllegalThreadStateException
group
が 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, IllegalThreadStateException
group
が 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.ThreadGroup
public 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, IllegalThreadStateException
checkAccess
メソッド (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, IllegalThreadStateException
ThreadGroup
オブジェクトの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 SecurityException
ThreadGroup
オブジェクトの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.ExceptionInInitializerError
ExceptionInInitializerError
は,静的初期化子又は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
を返す。