« 休日早朝海へ行く。 | トップページ | ベランダにネコ »

2011.06.07

java.lang.Stringの文字列編集メソッドはインスタンスを変更しないな

javaのStringクラスのメソッドのtoUpperCaseなど、ほとんど(全部か?)の文字列編集メソッドは加工後の文字列を返してくるだけで、インスタンスそのものは変更しないんだな。

つまり、


    String s = "abc";
    s.toUpperCase(); 
    // toUpperCaseの戻り値は"ABC"だが
    // s自身は書き換わらない。

だけでは、sは"abc"のままということだ。

javaのStringクラスは固定文字列のクラスであって編集してごちゃごちゃするのはStringBufferクラスの仕事。とわかっているんだが、よく「どっちだっけ?」と迷ってしまうのはワタシだけか?

ちなみにjavadocでは、「この String 内のすべての文字列を大文字に変換しますとなっていて、勘違いして当然かと。toLowerCase然り、replaceAllやreplaceFirstも似たような表現。

一方、replace(char oldChar, char newChar)では、「この文字列内にあるすべての oldChar を newChar に置換した結果生成される、新しい文字列を返します。 」とちょっとあいまいだけど一応正確に書かれているのだが、先の説明と読み比べて間違いを助長してそうな気もするな。

さてconcatはどうだっけ?また迷う。

« 休日早朝海へ行く。 | トップページ | ベランダにネコ »

プログラミング」カテゴリの記事

Java / Apache」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

« 休日早朝海へ行く。 | トップページ | ベランダにネコ »

2019年8月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
フォト

Google AdSense

銀の弾丸

無料ブログはココログ

他のアカウント