目次 | |

20. パッケージjava.lang


パッケージ java.langには,Java言語の設計にとって基本的なクラスが収められている。最も重要なクラスは Object 及び Class とする。 Object は,クラス階層のルートであり,Class は,そのインスタンスによって実行時のクラスを表現する。

プリミティブ型の値は,あたかもオブジェクトであるかのように表現する必要がある場合が多い。ラッパークラスであるBooleanCharacterIntegerLongFloat,及び Double はこの目的のために使用する。例えば,型 Double のオブジェクトは,型 double のフィールドをもち,その値への参照が、参照型の変数に格納できる方法によって、その値を表現している。これらのクラスは又,プリミティブ値の間で相互に変換するためのいくつかのメソッドを提供している。同様にequals,hashCode などの標準メソッドを使用可能とする。

クラス Math では,サイン,コサイン,平方根など広く使用されている数値演算を提供している。同様にクラス String 及び クラス StringBuffer では,広く使用されている文字列演算を提供している。

ClassLoaderProcessRuntimeSecurityManager,及びクラス 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

20.1 クラス java.lang.Object

クラス Object は,クラス階層の唯一のルートとする。配列を含むすべてのオブジェクトは クラス Object のメソッドを実装する。

public class Object {
    public final Class getClass();
    public String toString();
    public boolean equals(Object obj);
    public int hashCode();
    protected Object clone()
        throws CloneNotSupportedException;
    public final void wait()
throws IllegalMonitorStateException,
InterruptedException; public final void wait(long millis)
throws IllegalMonitorStateException,
InterruptedException; public final void wait(long millis, int nanos)
throws IllegalMonitorStateException, InterruptedException; public final void notify() throws IllegalMonitorStateException; public final void notifyAll() throws IllegalMonitorStateException; protected void finalize()
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 に実装されている等価関係の一般規則を以下に挙げる。

クラス 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 の一般規則を以下に挙げる。

クラス 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 とする)をこのオブジェクトの待機集合 (17.14)に入れ,このオブジェクトに対するすべての同期化の要求を放棄させる。スレッドTは,スレッドのスケジューリング上は無効になり,次の四つのいずれかが行われるまでスリープ状態になる。

待機の後,スレッド Tは,このオブジェクトの待機集合から削除され,スレッドスケジューリングが開始される。その後に,通常通り,他のスレッドとオブジェクトに対する同期化の権利を競合する。このオブジェクトの制御権を取得すると,そのオブジェクトに対するすべての同期化の要求が以前の状態,つまりメソッド wait が呼び出されたときの状態に復元する。この後,スレッド T はメソッド waitの呼び出しから戻る。したがって,メソッド waitから戻った際,オブジェクトとスレッド T の同期化の状態は,メソッド wait が呼び出されたときと同じになる。

現在のスレッドが待機中に,他のスレッドによって割り込まれた場合(20.20.31)InterruptedException が投げられる。この例外は,前述したように,このオブジェクトのロック状態が復元されるまで投げられない。

メソッド waitは,現在のスレッドをこのオブジェクトの待機集合に入れる時に,このオブジェクトのロックだけを解除する。現在のスレッドが同期化の対象にしている他のオブジェクトは,スレッドが待機している間,ロックされたままとする。

20.1.8 public final void wait(long millis, int nanos)
throws IllegalMonitorStateException, InterruptedException

このメソッドは,別のスレッドがこのオブジェクトに対して メソッド notify (20.1.9)又は,メソッド notifyAll (20.1.10)を呼び出すか,別のスレッドが現在のスレッドに割り込むか,指定された実時間が経過するまで,現在のスレッドを待機させる。

この時間はナノ秒単位で,次の式で求められる。

1000000*millis+nanos
ナノ秒単位で表す点を除き,このメソッドの動作は,パラメータを 一つ取るメソッド wait (20.1.7)同じとする。特に,wait(0, 0)wait(0) と同じとする。

20.1.9 public final void notify()
throws IllegalMonitorStateException

このオブジェクトに対して待機中 (20.1.7)のスレッドがある場合,そのうちの一つが選択されて再開される。この選択は任意であり、処理系の実装によって決定される。 メソッド notifyは,現在のスレッドがこのオブジェクトに対して既に同期化されている場合しか,呼び出すことができない。現在のスレッドがこのオブジェクトのロックを所有していない場合,IllegalMonitorStateExceptionが投げられる。

再開されたスレッドは,現在のスレッドがこのオブジェクトに対してかけたロックを放棄するまで,処理を進めることができない。再開されたスレッドは,通常通り,このオブジェクトに対する同期化をめぐって他のスレッドと競合することになる。例えば,再開したスレッドであっても,次にこのオブジェクトにロックをかける際に,有利も不利も受けない。

20.1.10 public final void notifyAll()
throws IllegalMonitorStateException

このオブジェクトに対して待機中(20.1.7)のすべてのスレッドを再開する。

メソッド notifyAllは,現在のスレッドがこのオブジェクトに対して既に同期化されている場合にだけ,呼び出すことができる。現在のスレッドがこのオブジェクトのロックを所有していない場合,IllegalMonitorStateExceptionが投げられる。

再開されたスレッドは,現在のスレッドがこのオブジェクトに対してかけたロックを放棄するまで,処理を進めることができない。再開されたスレッドは,通常通り,このオブジェクトに対する同期化をめぐって他のスレッドと競合することになる。例えば,再開したスレッドであっても,次にこのオブジェクトにロックをかける際に,有利も不利も受けない。

20.1.11 protected void finalize() throws Throwable

メソッド finalize (12.7) は,Java 仮想計算機が,まだ消滅していないスレッドがこのオブジェクトにアクセスできる方法がまったくないと判断した場合に呼び出される。ただし,終了できる状態にある他のオブジェクトやクラスを終了した結果,このオブジェクトにアクセスできる方法がなくなる場合は除く。メソッド finalize は,このオブジェクトを再び他のスレッドが利用できるようにするなど,あらゆる動作を実行できる。しかし,finalizeの通常の動作は,オブジェクトが完全に破棄される前にその後始末を行うことである。たとえば,入出力接続を表すオブジェクトに対して呼び出される メソッド finalizeは,オブジェクトが永久に破棄される前に,明示的に入出力トランザクションを実行して接続を切断する。

クラス Object の メソッド finalizeは,特別な動作は何も行わない。単に,正常終了する。Objectのサブクラスは,この定義を上書きすることができる。

Javaでは,あるオブジェクトに対してどのスレッドが メソッドfinalizeを呼び出すのか保証していない。ただし,finalizeが呼び出された際,それを呼び出したスレッドがユーザに見える同期化ロックを保持しないことは保証されている。捕捉されない例外がメソッド finalize によって投げられると,その例外は無視され,そのオブジェクトのファイナライズは終了する。

あるオブジェクトに対して メソッド finalizeが呼び出された後,Java仮想計算機がまだ消滅していないスレッドがこのオブジェクトにアクセスできる方法がないと再度判断するまでは,何も実行されない。終了できる状態にあり,オブジェクトを破棄できる状態にある他のオブジェクトやクラスが行う可能性のある動作も実行されない。

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; }

20.3.1 public String toString()

Classオブジェクト が表現するのは,宣言クラス又は配列クラス,class という内容の文字列,スペース,及びメソッド getName (20.3.2)の返すクラス名とする。このClassオブジェクトがインタフェースを表現する場合,interfaceという内容の文字列,スペース,及びメソッドgetName が返すインタフェースの名前とする。

つまり,このメソッドは次の式の値に等しい文字列を返す。

(isInterface() ? "interface " : "class ") + getName()
このメソッドは,Objectの メソッド toString (20.1.2)を上書きする。

20.3.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 のクラスファイル形式の章を参照のこと。

20.3.3 public boolean isInterface()

このClassオブジェクト がインタフェースを表現する場合,true を返す。このClassオブジェクトがクラスを表す場合,false を返す。

20.3.4 public Class getSuperclass()

このClassオブジェクト が,クラス Object 以外のクラスを表現する場合,そのクラスが属するスーパクラスを表現する Class を返す。このClassオブジェクト が,クラス Objectを表現するものである場合,又は,インタフェースを表現する場合,nullを返す。このClassオブジェクト が配列クラスを表現する場合,クラス Object を表現する Class を返す。

20.3.5 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 節でのインタフェース名の順序と対応する。

20.3.6 public Object newInstance()
throws InstantiationException, IllegalAccessException

このメソッドは,このClassオブジェクトによって表現されるクラスのインスタンスを新しく作成し,それを返す。これは,空の実引数リストである時のクラスインスタンス作成式 (15.8)と同じ動作をする。例えば,t をクラス Thread を表すClassオブジェクト とすると,t.newInstance()は,new Thread()と同じとする。このようなクラスインスタンス作成式の評価が突然終了すると,メソッド newInstance の呼び出しも同じ理由により突然終了する。InstantiationException の詳細は,11.5.1.2も参照のこと。

20.3.7 public ClassLoader getClassLoader()

このメソッドは,このクラスをロードしたクラスローダ (20.14)への参照を返す。このクラスにクラスローダがない場合は,null を返す。

20.3.8 public static Class forName(String className)
throws ClassNotFoundException

このメソッドは,クラスの完全限定名が文字列で指定されると,クラスの検索,ロード (12.2),及びリンク (12.3)を試みる。成功すると,クラスのClassオブジェクト への参照を返す。失敗すると,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);
}

20.4.1 public static final Boolean TRUE = new Boolean(true);

このフィールドの定数値は,プリミティブ値 true に対応するBooleanオブジェクト とする。

20.4.2 public static final Boolean FALSE = new Boolean(false);

このフィールドの定数値は,プリミティブ値 false に対応するBooleanオブジェクト とする。

20.4.3 public Boolean(boolean value)

このコンストラクタは,実引数で指定されたプリミティブ値を表すBooleanオブジェクト を新しく作成する。

20.4.4 public Boolean(String s)

このコンストラクタは,Booleanオブジェクト を新しく作成し,実引数が null ではなく,大文字小文字の区別なしで "true" と一致する場合に,またその場合にだけ,それを true で初期化する。

次に例を挙げる。


Boolean("True") は,true を表すBooleanオブジェクト を新しく作成する。
Boolean ("yes")はfalse を表すBooleanオブジェクト を新しく作成する。

20.4.5 public String toString()

このBooleanオブジェクト が true を表現する場合,"true" と等しい文字列を返す。このBooleanオブジェクトが false を表現する場合,"false" と等しい文字列を返す。

このメソッドは,Object (20.1.2)のメソッド toString を上書きする。

20.4.6 public boolean equals(Object obj)

実引数が null でなく,それがこのBooleanオブジェクトと等しい boolean 値を表すBooleanオブジェクトである場合に,またその場合にだけ true が結果として返される。

このメソッドは,Objectの メソッド equals (20.1.3)を上書きする。

20.4.7 public int hashCode()

このBooleanオブジェクト が true を表現する場合,整数 1231 を返す。このBooleanオブジェクト が false を表現する場合,整数 1237 を返す。

このメソッドは,Objectの メソッド hashCode(20.1.4)を上書きする。

20.4.8 public boolean booleanValue()

このBooleanオブジェクト によって表現されるプリミティブな boolean 値を返す。

20.4.9 public static boolean valueOf(String s)

実引数が空でなく,かつ大文字小文字の区別を無視して,文字列 "true" と等しい場合,またその場合にだけ結果が true になる。

例えば,Boolean.valueOf("True")true を返す。

例えば,Boolean.valueOf("yes")false を返す。

20.4.10 public static boolean getBoolean(String name)

実引数により名前が付けられたシステム属性 (20.18.9)の値が,大文字小文字の区別を無視して,文字列 "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コンパイラで使用する。

Unicode 1.1.5 属性テーブルは,次の URL で WWW から入手できる。

ftp://unicode.org/pub/MappingTables/UnicodeData-1.1.5.txt
ただし,このファイルは若干のエラーを含んでいる。以下で“Unicode属性テーブル”に言及する場合は,このファイルを修正を加えたものを指す。

Unicode第2.0版では,これらの問題は訂正されていると予測される。

Java 1.1では,Unicode第1.1.5版に基づいてここで定義されるメソッド,又は,希望的観測では,新しいUnicode第2.0版を使用した新しいバージョンのメソッドが利用できるようになる予定である。Unicode第2.0版の文字属性テーブルは,現在WWWでファイルとして公開され,次のURLから入手可能である。

ftp://unicode.org/pub/MappingTables/UnicodeData-2.0.12.txt
Unicode に依存するメソッドに関する情報は,随時更新される予定になっている。

Unicode第2版での,もっとも大きな変更点は,朝鮮語(チョソノ)のハングルを大きく配置しなおしたことである。また,その他,細かい修正も加えられている。

20.5.1 public static final char MIN_VALUE = '\u0000';

このフィールドの定数値は,型 char の最小値とする。

[このフィールドは,Java Version 1.1 で導入される予定]

20.5.2 public static final char MAX_VALUE = '\uffff';

このフィールドの定数値は,型 char の最大値とする。

[このフィールドは,Java Version 1.1 で導入される予定]

20.5.3 public static final int MIN_RADIX = 2;

このフィールドの定数値は,クラス Integer (20.7) のメソッド digit (20.5.23),メソッド forDigit (20.5.24),及びメソッドtoString など基数に関係するメソッドの実引数 radix として指定可能な最小値とする。

20.5.4 public static final int MAX_RADIX = 36;

このフィールドの定数値は,クラス Integer (20.7)のメソッド digit(20.5.23),メソッド forDigit (20.5.24),及びメソッド toString など基数に関係するメソッドの実引数 radix として指定可能な最大値とする。

20.5.5 public Character(char value)

このコンストラクタは,実引数で指定されたプリミティブ値を表すオブジェクト Character を作成する。

20.5.6 public String toString()

このメソッドは,長さが 1 で,このCharacterオブジェクト の表すプリミティブ値 char を唯一の要素とする String を返す。

Object のメソッド toString (20.1.2)を上書きする。

20.5.7 public boolean equals(Object obj)

実引数が空でなく,かつこのCharacterオブジェクト と同じ char 値を持つCharacterオブジェクトである場合,またその場合にだけ結果が true になる。

オブジェクトのメソッド equals を上書きする(20.1.3)

20.5.8 public int hashCode()

このCharacterオブジェクト で表現される char プリミティブの値が型 int にキャストされたものを返す。

オブジェクトのメソッド hashCode(20.1.4)を上書きする。

20.5.9 public char charValue()

このCharacterオブジェクト で表現される char プリミティブの値を返す。

20.5.10 public static boolean isDefined(char ch)

文字実引数が定義済みUnicode文字である場合,またその場合にだけ,true が結果として返される。

文字は,次の条件のうち少なくとも一つが真である場合に,またその場合にだけ,定義済みUnicode文字とする。

従って,前述したUnicode第1.1.5版では,定義済みUnicode文字のコードは,次に挙げる文字コードあるいは文字コード領域のリストに含まれている。

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

[このメソッドは,ここで定義されている通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入される予定である。 20.5を参照のこと。]

20.5.11 public static boolean isLowerCase(char ch)

文字実引数が小文字である場合に,またその場合にだけ,true が結果として返される。

文字は,次の条件のすべてを満たす場合に,またその場合にだけ,小文字であると見なされる。

従って,前述したUnicode第1.1.5版では,Unicode文字の小文字のコードは,次に挙げる文字コードあるいは文字コード領域のリストに含まれていることになる。

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

Unicode文字の最初の128文字のうち,次の26文字だけが小文字であると見なされる。

abcdefghijklmnopqrstuvwxyz
[メソッド isLowerCase の仕様は,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。20.5を参照のこと。]

20.5.12 public static boolean isUpperCase(char ch)

文字実引数が大文字である場合に,またその場合にだけ true が結果として返される。

文字は,次の条件のすべてを満たす場合に,またその場合にだけ,大文字であると見なされる。

従って,前述したUnicode第1.1.5版では,Unicode文字の大文字のコードは,次に挙げる文字コードあるいは文字コード領域のリストに含まれていることになる。

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

Unicode文字の最初の128文字のうち,次の26文字だけが大文字だと見なされる。

ABCDEFGHIJKLMNOPQRSTUVWXYZ
[メソッド isUpperCase の仕様は,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。 20.5を参照のこと。]

20.5.13 public static boolean isTitleCase(char ch)

文字実引数がタイトルケースである場合に,またその場合にだけ,true が結果として返される。

“タイトルケース”という概念がUnicodeに導入されたのは,ある特殊な状況に対処するためであった。Unicodeには,1文字として扱われながら見た目には二つの普通のラテン文字に見える文字がある。例えば,Unicodeには‘LJ’(\u01C7)という文字がある。これは,‘L’と‘J’という二つの文字が続いたように見えるが,1文字である。また,対応する小文字‘lj’(\u01C9)もある。これらの文字がUnicodeにあるのは,主に,セルビアなどで使われているキリルアルファベットから,例えばラテンアルファベットへの,一対一転記を可能にするためである。ここで,“LJUBINJE”という単語を考えてみるが(これは,おそらくキリル文字を転記したものであり,‘LJ’と‘NJ’がそれぞれ1文字であるので,8文字ではなく,6文字(six) である),書名の一部に使う場合には,大文字と小文字で書くことになっている。初めの文字を大文字にし,それ以外の文字を小文字にするという方法では,“LJubinje”となってしまい,具合が悪い。この解決策として,タイトルケース と呼ばれる三つめの形を使うことになった。‘LJ’のタイトルケースは‘Lj’(\u01C8)であり,‘NJ’のタイトルケースは‘Nj’とする。書名に出てくる単語の場合,可能であれば初めの文字をタイトルケースに変換し,そうでなければ大文字に変換する。その他の文字は,小文字に変換される。

文字は,次の条件の両方が真である場合に,またその場合にだけ,タイトルケースであると見なされる。

Unicode1.1.5では,次の4つの文字が 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を参照のこと。]

20.5.14 public static boolean isDigit(char ch)

文字実引数が数字である場合に,またその場合にだけ true が結果として返される。

文字は,次の条件の両方が真である場合に,またその場合にだけ,数字であると見なされる。

数字は次のコードを持つ文字とする。

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    全角数字
Unicode文字の最初の128文字のうち,次の10文字だけが数字であると見なされる。

0123456789
[このメソッドは,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。20.5を参照のこと。]

20.5.15 public static boolean isLetter(char ch)

文字実引数が文字(letter)である場合に,またその場合にだけ,true が結果として返される。

文字が letter又は数字 (20.5.16) のいずれかであり,かつ数字 (20.5.14) ではない場合に,またその場合にだけ,文字は letter と見なされる。

[このメソッドは,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。20.5を参照のこと。]

20.5.16 public static boolean isLetterOrDigit(char ch)

文字実引数が文字か数字(letter-or-digit)の場合に,またその場合にだけ,true を結果として返す。

文字は,定義済みUnicode文字(20.5.10)であり,その文字コードが次の範囲に該当する場合に,またその場合にだけ,文字か数字(letter-or-digit)と見なされる。

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    半角片仮名及びハングル
したがって,前述した修正を加えたUnicode1.1.5では,Unicode文字及び数字は,以下に挙げたコード及びコード領域のリストにあるいずれかのコードを持つ。

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

[このメソッドは,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。20.5を参照のこと。]

20.5.17 public static boolean isJavaLetter(char ch)

文字実引数がJava識別子の先頭に来ることのできる文字である場合に,またその場合にだけ,true を結果として返す。

実引数は,文字(20.5.15)又はドル記号 '$'(\u0024)又は下線 '_' (\u005F)である場合に,またその場合にだけ,Java文字と見なされる。

[このメソッドは,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。20.5を参照のこと。]

20.5.18 public static boolean isJavaLetterOrDigit(char ch)

文字実引数がJava識別子の2文字目以降に現われることのできる文字である場合に,またその場合にだけ,true を結果として返す。

文字は,文字又は数字(letter-or-digit) (20.5.16)又はドル記号 '$' (\u0024)又は下線 '_' (\u005F)である場合に,またその場合にだけ,Java文字・数字と見なされる。

[このメソッドは,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。20.5を参照のこと。]

20.5.19 public static boolean isSpace(char ch)

実引数 ch が次のいずれかの文字に該当する場合,true を結果として返す。


'\t'        \u0009            HT        水平タブ
'\n'        \u000A            LF        ラインフィード (改行)
'\f'        \u000C            FF        フォームフィード
'\r'        \u000D            CR        復帰
' '         \u0020            SP        空白
それ以外の場合は,false を返す。

20.5.20 public static char toLowerCase(char ch)

文字 ch に対応する小文字がUnicode属性テーブルで定義されている場合,その対応する小文字を返す。それ以外は,実引数 ch を返す。

前述した修正を加えたUnicode1.1.5のUnicode属性テーブルで定義される小文字の対応表を次に挙げる。次の表では矢印の左側の文字に対応する小文字が矢印の右側に示されている。

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, 019D0272, 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, 01C401C6, 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, 038C03CC, 038E03CD, 038F03CE, 0391-03A1 03B1-03C1, 03A3-03AB 03C3-03CB, 03E2-03EE 03E3-03EF (偶数から奇数), 0401-040C 0451-045C, 040E045E, 040F045F, 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, 1F591F51, 1F5B1F53, 1F5D1F55, 1F5F1F57, 1F68-1F6F 1F60-1F67, 1F88-1F8F 1F80-1F87, 1F98-1F9F 1F90-1F97, 1FA8-1FAF 1FA0-1FA7, 1FB81FB0, 1FB91FB1, 1FBA1F70, 1FBB1F71, 1FBC1FB3, 1FC8-1FCB 1F72-1F75, 1FCC1FC3, 1FD81FD0, 1FD91FD1, 1FDA1F76, 1FDB1F77, 1FE81FE0, 1FE91FE1, 1FEA1F7A, 1FEB1F7B, 1FEC1FE5, 1FF81F78, 1FF91F79, 1FFA1F7C, 1FFB1F7D, 1FFC1FF3, 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を参照のこと。]

20.5.21 public static char toUpperCase(char ch)

文字 ch に対応する大文字がUnicode属性テーブルで定義されている場合,その対応する大文字を返す。それ以外は,実引数 ch を返す。

前述した修正を加えたUnicode1.1.5のUnicode属性テーブルで定義される大文字の対応表を次に挙げる。次の表では矢印の左側の文字に対応する大文字が矢印の右側に示されている。

0061-007A 0041-005A, 00E0-00F6 00C0-00D6, 00F8-00FE 00D8-00DE, 00FF0178, 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, 01C601C4, 01C801C7, 01C901C7, 01CB01CA, 01CC01CA, 01CE-01DC 01CD-01DB (偶数から奇数), 01DF-01EF 01DE-01EE (奇数から偶数), 01F2 01F1, 01F3 01F1, 01F5 01F4, 01FB-0217 01FA-0216 (奇数から偶数), 0253 0181, 0254 0186, 0257018A, 0258018E, 0259018F, 025B0190, 02600193, 02630194, 02680197, 02690196, 026F019C, 0272019D, 028301A9, 028801AE, 028A01B1, 028B01B2, 029201B7, 03AC0386, 03AD-03AF 0388-038A, 03B1-03C1 0391-03A1, 03C203A3, 03C3-03CB 03A3-03AB, 03CC038C, 03CD038E, 03CE038F, 03D00392, 03D10398, 03D503A6, 03D603A0, 03E3-03EF 03E2-03EE (奇数から偶数), 03F0 039A, 03F103A1, 0430-044F 0410-042F, 0451-045C 0401-040C, 045E040E, 045F040F, 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, 1F511F59, 1F531F5B, 1F551F5D, 1F571F5F, 1F60-1F67 1F68-1F6F, 1F701FBA, 1F711FBB, 1F72-1F75 1FC8-1FCB, 1F761FDA, 1F771FDB, 1F781FF8, 1F791FF9, 1F7A1FEA, 1F7B 1FEB, 1F7C 1FFA, 1F7D 1FFB, 1F80-1F87 1F88-1F8F, 1F90-1F97 1F98-1F9F, 1FA0-1FA7 1FA8-1FAF, 1FB01FB8, 1FB11FB9, 1FB31FBC, 1FC31FCC, 1FD01FD8, 1FD11FD9, 1FE01FE8, 1FE11FE9, 1FE51FEC, 1FF31FFC, 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を参照のこと。]

20.5.22 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 とする。

[このメソッドは,バージョン1.1のJavaで導入予定である。]

20.5.23 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)より大きくない場合に,またその場合にだけ,有効とする。

文字は,次のいずれかが成り立つ場合に,またその場合にだけ,有効な数字だと判定される。

[メソッド digitについてのこの仕様は,ここで定義された通りに,又はUnicode2.0に対応した形で,バージョン1.1のJavaから導入の予定である。20.5を参照のこと。]

20.5.24 public static char forDigit(int digit, int radix)

指定された基数で与えられた数字を表現する文字を返す。radix の値が有効な基数ではない場合,又は digit の値が指定された基数で有効な数字ではない場合,null文字 '\u0000' を返す。

基数は,その値がCharacter.MIN_RADIX (20.5.3) より小さくなく,及びCharacter.MAX_RADIX(20.5.4)より大きくない場合に,またその場合にだけ,有効とする。

数値は,負でなく,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 には,サブクラスとして IntegerLongFloat,及び Double がある。これらのサブクラスは,表現された数値を intlongfloat,及び double に変換する抽象メソッドを定義して,プリミティブ型をラップする。

public abstract class Number {
    public abstract int intValue();
    public abstract long longValue();
    public abstract float floatValue();
    public abstract double doubleValue();
}

20.6.1 public abstract int intValue()

メソッド intValue は,このNumberオブジェクトによって表現される数値を型 int に変換した後,その値を返す。

Integer (20.7.8)Long (20.8.8)Float (20.9.12)及び Double (20.10.11)によって上書きされる。

20.6.2 public abstract long longValue()

メソッド longValue は,このNumberオブジェクト によって表現される数値を型 long に変換した後,その値を返す。

Integer (20.7.9)Long (20.8.9),Float (20.9.13)及び Double (20.10.12)によって上書きされる。

20.6.3 public abstract float floatValue()

メソッド floatValue は,このNumberオブジェクト によって表現される数値を型 float に変換した後,その値を返す。

Integer (20.7.10)Long (20.8.10)Float (20.9.14)及び Double(20.10.13)によって上書きされる。

20.6.4 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); }

20.7.1 public static final int MIN_VALUE = 0x80000000;

このフィールドの定数値は,型 int の最小値 -2147483648 とする。

20.7.2 public static final int MAX_VALUE = 0x7fffffff;

このフィールドの定数値は,型 int の最大値 2147483647 とする。

20.7.3 public Integer(int value)

このコンストラクタは, Integerオブジェクト を新しく作成し,実引数に指定されたプリミティブ値で初期化する。

20.7.4 public Integer(String s) throws NumberFormatException

このコンストラクタは, Integerオブジェクト を新しく作成し,それを10進表記の文字列によって表現された整数で初期化する。文字列は,メソッド parseInt(20.7.18) が基数10に対して行うのと同じ方法で int 値に変換される。

20.7.5 public String toString()

このIntegerオブジェクト によって表現される整数値を符号付き10進表現に変換し,その値を文字列として返す。これは,実引数を一つ取るメソッド toString(20.7.12)の実引数として,この整数値を渡すのと同じとする。

このメソッドは,Object のメソッド toString (20.1.2)を上書きする。

20.7.6 public boolean equals(Object obj)

実引数が null でなく,このIntegerオブジェクトと同じ int 値を表現するIntegerオブジェクトである場合に,またその場合にだけ,true を返す。

オブジェクトのメソッド equals (20.1.3)を上書きする。

20.7.7 public int hashCode()

このInteger オブジェクトによって表現されるプリミティブの int 値を返す。

Object のメソッド hashCode (20.1.4)を上書きする。

20.7.8 public int intValue()

このIntegerオブジェクト によって表現される int 値を返す。

Number のメソッド intValue (20.6.1)を上書きする。

20.7.9 public long longValue()

このIntegerオブジェクト によって表現される int 値が,型 long に変換(5.1.2)され,その変換結果を返す。

Number のメソッド longValue (20.6.2)を上書きする。

20.7.10 public float floatValue()

このIntegerオブジェクト によって表現される int 値が,型 float に変換(5.1.2)され,その変換結果を返す。

Number のメソッド floatValue (20.6.3)を上書きする。

20.7.11 public double doubleValue()

このIntegerオブジェクト によって表現される int 値が,型 double に変換 (5.1.2)され,その変換結果を返す。

Number のメソッド doubleValue (20.6.4)を上書きする。

20.7.12 public static String toString(int i)

実引数を符号付き10進数表現に変換し,文字列として返す。これは,実引数を二つ取るメソッド toString (20.7.13)の実引数として,この実引数と基数10 を渡すのと同じとする。

20.7.13 public static String toString(int i, int radix)

一つ目の実引数の整数値を2番目の実引数で指定された整数を基数とする数値の符号付き表現に変換し,その値を文字列として返す。

基数が Character.MIN_RADIX (20.5.3)より小さいか,Character.MAX_RADIX (20.5.4)より大きい場合,代わりに 10 が基数として使用される。

一つ目の実引数が負の場合,戻り値の最初の文字は '-'('\u002d')になる。一つ目の実引数が負でない場合,戻り値に符号は付かない。

戻り値から符号を取った残りの文字は,一つ目の実引数の絶対値を表現する。絶対値がゼロの場合,一つのゼロ文字 '0'('\u0030')で表現される。それ以外の場合,絶対値の先頭文字は,ゼロ文字にならない。数字として使用できるASCII文字は,次の通りとする。

0123456789abcdefghijklmnopqrstuvwxyz
これらの文字の範囲は,'\u0030' から '\u0039' まで,及び '\u0061' から '\u007a'とする。radixN とすると,このうちの最初の N 個の文字が上記の順序で基数 Nの数字として使用される。したがって,16進数(基数16)での数字は,0123456789abcdefになる。大文字にする場合は,戻り値に対して次のようにクラスString のメソッド toUpperCase (20.12.36)を呼び出す。

Integer.toString(n, 16).toUpperCase()

20.7.14 public static String toHexString(int i)

実引数を符号なし16進数(基数16)に変換し,その値を文字列として返す。

戻り値は,実引数の符号なしの絶対値を表現する。実引数が負の場合,戻り値は実引数にを加えた値になる。それ以外の場合は,実引数と同じ値を返す。

符号なしの絶対値がゼロの場合,一つのゼロ文字 '0'('\u0030')で表現される。それ以外は,符号なしの絶対値の先頭文字は,ゼロ文字にならない。16進数字として使用できる文字は,次の通りとする。

0123456789abcdef
これらの文字の範囲は,'\u0030' から '\u0039' まで,及び '\u0061' から '\u0066' までとする。大文字にする場合は,戻り値に対して次のようにクラス String のメソッド toUpperCase (20.12.36) を呼び出す。

Long.toHexString(n).toUpperCase()

20.7.15 public static String toOctalString(int i)

実引数を符号なし8進数(基数8)に変換し,その値を文字列として返す。

戻り値は,実引数の符号なしの絶対値を表現する。実引数が負の場合,戻り値は実引数にを加えた値になる。それ以外の場合は,実引数と同じ値を返す。

符号なしの絶対値がゼロの場合,一つのゼロ文字 '0'('\u0030')で表現される。それ以外は,符号なしの絶対値の先頭文字は,ゼロ文字にならない。8進数字として使用できる文字は,次の通りとする。

01234567
これらの文字の範囲は,'\u0030' から '\u0037' までとする。

20.7.16 public static String toBinaryString(int i)

実引数を符号なし2進数(基数2)に変換し,その値を文字列として返す。

戻り値は,実引数の符号なしの絶対値を表現する。実引数が負の場合,戻り値は実引数にを加えた値になる。それ以外の場合は,実引数と同じ値を返す。

符号なしの絶対値がゼロの場合,一つのゼロ文字 '0'('\u0030')で表現される。それ以外は,符号なしの絶対値の先頭文字は,ゼロ文字にならない。2進数字として使用できる文字は,'0'('\u0030')と '1'('\u0031')とする。

20.7.17 public static int parseInt(String s)
throws NumberFormatException

実引数は,符号付き10進整数を表現していると解釈される。文字列内の文字はすべて10進数字であることが必要である。ただし,先頭文字が負の値を示す '-'('\u002d')になる場合もある。この結果として取得された整数値を返す。これは,実引数を二つ取るメソッド parseInt(20.7.18)の実引数として,この実引数と基数 10 を渡すのと同じとする。

20.7.18 public static int parseInt(String s, int radix)
throws NumberFormatException

一つ目の実引数は,二つ目の実引数で指定された整数を基数とする符号付き整数として解釈される。文字列内の文字は,すべて指定された基数にとって有効な文字であることが必要である(有効な文字かどうかは,Character.digit(20.5.23)が負でない値を返すかどうかで判定できる)。ただし,先頭文字が負の値を示す '-'('\u002d')になる場合もある。この結果として取得された整数値を返す。

次のいずれかの場合,型 NumberFormatException の例外が投げられる。

次に例を挙げる。

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 を返す

20.7.19 public static Integer valueOf(String s)
throws NumberFormatException

実引数は,符号付き10進整数を表現していると解釈される。これは,実引数を一つ取るメソッドparseInt(20.7.17)に,この実引数を渡す場合と同じとする。文字列で指定された整数値を表すIntegerオブジェクトを返す。

言い換えれば,このメソッドは,次の式の値に等しいIntegerオブジェクト を返す。

new Integer(Integer.parseInt(s))

20.7.20 public static Integer valueOf(String s, int radix)
throws NumberFormatException

一つ目の実引数は,二つ目の実引数で指定された整数を基数とする符号付き整数として解釈される。これは,実引数を二つ取るメソッド parseInt(20.7.18)に,この実引数を渡す場合と同じとする。文字列で指定された整数値を表すIntegerオブジェクト を返す。

言い換えれば,このメソッドは,次の式の値に等しいIntegerオブジェクト を返す。

new Integer(Integer.parseInt(s, radix))

20.7.21 public static Integer getInteger(String nm)

実引数は,メソッド System.getProperty(20.18.9)で取得されるものと同じシステム属性の名前として扱われる。この属性の文字列値は,整数値として解釈され,この値を表現するIntegerオブジェクトを返す。指定した名前の属性がない場合,又は属性の値が数値として正しい書式でない場合,null を返す。

言い換えれば,このメソッドは,次の式の値に等しいIntegerオブジェクト を返す。

getInteger(nm, null)

20.7.22 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オブジェクト の割り当てを回避できる。

20.7.23 public static Integer getInteger(String nm, Integer val)

一つ目の実引数は,メソッド System.getProperty( 20.18.9)で取得されるものと同じシステム属性の名前として扱われる。この属性の文字列値は,整数値として解釈され,この値を表現するIntegerオブジェクト を返す。