転職を繰り返したサラリーマンの多趣味ブログ

30才未経験でSEに転職した人の多趣味ブログ

【技術書メモ】【パーフェクトJava⑥】

文字列比較について

// ==演算子は、同じ文字列オブジェクトか否かを判定する
// よって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メソッドを使用すること。