2013年10月28日月曜日

Stringの比較

stringの比較には”==”を使ってはならない。
”==”で一致するのは文字列リテラルのときのみ。
String s1 = "012";
String s2 = "01";
s2 += "2";
//s1 == s2 は不成立

変数が参照する文字列オブジェクトと文字列リテラルを同値比較するとき、
次の方法は避ける。

s.equals("012");

上記はsがnullのときNullPointerExceptionが発生する。
正しくは以下。
"012".equals(s);

StringBuilderオブジェクトと同値比較をする場合、contentEqualsメソッドを使う。
contentEqualsメソッドはStringオブジェクト同士の比較にも使える。
以下のように比較する。
StringBuilder sb1 = new StringBuilder("012");
StringBuilder sb2 = new StringBuilder("012");
sb1 == sb2; //false
sb1.equals(sb2);//false
sb.toString().contentEquals(sb2);//true


ちょっとややこしいけど、文字列大事。

以上です。


0 件のコメント:

コメントを投稿