next up previous contents
Next: コマンド引数の処理 Up: 応用 Java Application Previous: Contents

String

Cには、charの配列ないしはcharへのポインタとして、文字列を表すという 習慣があります。さらに、文字列の終わりを、null文字で表現するという 伝統があります。 Cには、文字列型という型は、存在しないことは留意すべ き事です。

ところで、「charの配列」と、「charへのポインタ」とは、「型」としては 異なるものです。ただ、Cでの配列の実現方法が、両者を同じものとして 扱うことを可能にしています。 また、文字列の終わりをnull文字とするのは、便宜的な約束です。同じように、 char ** argv; で、argvに現れる最初のnullを、引数の終わりを表すという ルールを採用すれば、argc無しですますことも出来るのですが、こちらのほうは、 あまり、一般的ではありません。

Cに慣れてしまうと、こうしたことは、あまり気に掛けることも無くなってしまうの ですが、僕達は、C言語の創始者達のすばらしい思い付きを、当り前の例題学習の 形で踏襲し続けているのです。

Java では、明確にStringという型が存在します。これは、CプログラマがJava を始めて 最初に意識しなければならないことの一つです。Java には、ある意味でCを特徴付 ていた、「〜へのポインタ」という型は、存在しなくなりました。くどいようですが、 JavaのStringは、「charの配列」でも「charへのポインタ」でもありません。

Cでの文字列処理になれているものが戸惑うことは他にもあります。 Javaには、Stringとは別に、char という型と、byte という型が存在します。 Cでのcharは、一バイトでしたが、Java でのchar は、日本語などの多バイトコードの 言語を想定して、あらかじめ二バイトになっています。

その代わり、Javaでは、byteという型が、一バイトを指すのです。 実際のプログラムでは、charの配列や、byteの配列といったものを、String に変換 する、あるいは、その逆といった処理が必要になります。

Java には、Stringクラスとならんで、StringBufferというクラスが存在します。 このクラスは、基本的には、charの配列として実現されています。文字列の 中身がどんどん変更されたり、追加されつような場合には、このクラスで文字列 操作を行うと便利です。最終的には、String を生成するための作業領域と考える のがいいかもしれません。





maruyama@wakhok.ac.jp