【初心者】Java質問・相談スレ48【大歓迎】
■ このスレッドは過去ログ倉庫に格納されています
0781デフォルトの名無しさん
NGNGString b = new String("");
これだと、a==b はfalseになる。new というキーワードを使う以上、
常に新しいオブジェクトが作成されるからaとbは別のインスタンス。
ただし、
a.equals(b) はtrue。java.lang.Stringではequals()がオーバーライド
されていて、格納されている文字が一致すればtrueが返る仕様になっている。
String a = "";
String b = "";
これだと、a==b はtrueになる。文字列リテラルはいったん作成されると
VM上のある場所にプールされる。次回以降に同一のリテラルが呼び出されると
プールされた同じメモリ領域を参照するようになる。
当然、
a.equals(b) はtrue。おなじものを参照しているのだから。
■ このスレッドは過去ログ倉庫に格納されています