JavaでStringBuffer作るときにchar値をぶちこんだら、あらぬことになりましたの。

 ・上手くいかなかった書き方
  char c = 'a';
  piyo = new StringBuffer(c);
  (piyoの中身:"")

 ・正しいの
  char c = 'a';
  piyo= new StringBuffer(Character.toString(c));
  (piyoの中身:"a")

 ダメな例も素知らぬ顔で動いちゃうんですけど! なぜに!
 Java6のAPI仕様書を見たら、StringBufferのコンストラクタの引数にcharなんて無いじゃないですか。びっくり。ええー、だったら例外の一つも出せですの。このやろぉぉー。

 有効な引数にintがあったので、たぶん、charを整数値として受け取ったんでしょうかしら。。

 文字を入れるためのcharが、裏技的に符合無しshortとして使えるのは有名な話ですが、こういう時に、まさかStringを差し置いてint側に倒れるとは予想外でしたの。。

0 コメント: