文字列比較について
// ==演算子は、同じ文字列オブジェクトか否かを判定する // よってstr != str2 String str = "abc"; String str2 = new StringBuilder("abc").toString();
単に文字列を比較したいなら
String str = "abc"; String str2 = new StringBuilder("abc").toString(); // 文字列を比較 if(str.equals(str2)) { System.out.println("同じ文字列"); }
文字列リテラルは、中身が同じならば同一の文字列オブジェクトになる。
String str = "abc"; String str2 = "abc"; if(str == str2) { System.out.println("同一オブジェクト"); }
StringとStringBuilderの文字列比較
String str = "abc"; StringBuilder sb = new StringBuilder("abc"); if(str.equals(sb)) { System.out.println("別値扱いとなる"); }
正しくは
String str = "abc"; StringBuilder sb = new StringBuilder("abc"); // contentEqualsメソッドを使用する // Stringオブジェクト同士の比較にも使える if(str.contentEquals(sb)) { System.out.println("同値扱いとなる"); }
なお、StringBuilder同士の比較は、Stringオブジェクトに変換してからcontentEqualsメソッドを使用すること。