Я знаю, что java хранит String Literals
в Common Pool
и два строковых литерала, имеющих один и тот же текст, будут ссылаться на одно и то же место в Common Pool. взять под кодом:Что такое специальный случай, который делает `str1 == str2` логической ошибкой?
String str1 = "Amir";
String str2 = "Amir";
теперь оба str1
и str2
ссылаются на то же место в общем пуле. поэтому из всего, что мы знаем, мы должны использовать equals() для правильного сравнения этих двух строк и, очевидно, str1.equals(str2)
будет true
.
сейчас из того, что я читал here, он говорит, что значение str1 == str2
будет истинным, потому что строки имеют одинаковый адрес (звучит довольно логично), но он также утверждает, что для этого логическая ошибка.
Мой вопрос: что это за специальный случай, который может устранить проблему и непоследовательность моего кода, если я использую str1 == str2
?
Также: http://ideone.com/NTGlRC – JLRishe
yes true. даже это: http://ideone.com/jU4GAA –