Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

Stringクラスについて

いつもお世話になっております。
Stringクラスについて質問です。

String s = "abc";
String t = "abc";

を 

if(s == t){

で比較すると「true」が戻ってくるのですが、

String s = new String("abc");
String t = new String("abc");

を比較すると「false」が戻ってきます。

また、

String s = "abc";
String x = "def";

を比較すると「false」が戻ってきます。

Stringコンストラクタは新たに生成しようとしたものと同じインスタンス(equalsメソッドでtrueになる)ものがある場合は、新たにインスタンスを生成するのではなく、すでに存在するインスタンスへの参照を代入するという認識で正しいでしょうか?

長くなりましたが、ご存知の方いらっしゃいましたら教えてください。

1

回答

89157

閲覧

1件の回答

評価

0

ここの過去ログでも何度も出ていますが…。

最初から文字列を記述した場合だけ、同じフィールドを使うのでtrueになります。
new Stringした場合は、必ず元のフィールドのコピーが作られるのでfalseになります。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。