next up previous contents
Next: Converterクラス Up: JDK1.1での日本語処理 Previous: JDK1.1での日本語処理

Java String

Cの文字列とJava Stringクラス

Java ではCと異なって、char 型は、2バイトで表現されます。これは、我々アジアの マルチバイト文字を使っているものには当然と思えるのですが、アメリカ生まれの 言語仕様としては、一つの「見識」です。それにともなってJava では、byte型と いう一バイトを表す新しい型が導入されました。 それだけではありません。Cでは「文字列」は、「charの配列」として、あるいは、 「charへのポインター」として定義されていましたが、Java では、文字列 は、 Stringというクラスで表現され、直接には、先にみたJava のcharの配列でも、 byteの配列でもありません。ただ、Stringを構成するのが、byteの並びではなく charの並びであることには、注意が必要です。

Javaでのbyteとcharの区別

Java の文字列処理を考えるとき、byteとcharの区別は重要な意味を持ってきます。 普通に考えれば、それは一バイトと二バイトの違いであり、入出力の低いレベルでは byteの並びが、少し高いレベルでは、それを解釈しなおしたcharの並びが使われる ということなのですが、Java では、それらの普通の意味に、次のような少し特殊な 意味が付け加えられています。

第一に、byteのstreamが、ファイルやネットワーク上のデータなど、多様な encode system に基づくJava 外部のデータを表現するのに対して、charは、 Java 内部でユニークな文字表現の「内部コード」を意味しています。

第二に、これは重要なことなのですが、その「内部コード」は、Unicodeで あらねばならないのです。すなわち、charとは、Unicodeのことなのです。

JDK1.1では、この、「byte=外部コード=様々のコード体系」「char=内部コード= Unicode」という区別が、きわめて明確に打ち出されています。



maruyama@wakhok.ac.jp