я вроде рассказывал кто-то, что мы должны использовать метод String.equals для сравнения значений двух строк, мы не можем просто использовать == оператора в Java для сравнения строк, и сказал, что == вернет false, так как не сравнивает строковое значение, а значение объекта String.Сравнение двух строк с одинаковым (==) оператора
Я написал этот пример, чтобы показать ему, но мое удивление, он всегда печатает верно для оператора == .. здесь код
public void exampleFunc1(){
String string1 = "ABC";
String string2 = "ABC";
if(string1 == string2)
System.out.println("true");
else{
System.out.println("false");
}
System.out.println(" Are they equal "+(string1 == string2)); // this shouldn't print True but it does
System.out.println(" Are they equal "+(string1.equals(string2)));
}
Выхода: -
ли они равны истинными
ли они равны истинным
Так вопрос здесь, в каких обстоятельствах == оператор на объектах может печатать true, за исключением того, что оба объекта являются одним и тем же экземпляром?
См. Ответ на [Сравнение строк и интернирование строк в Java] (http://stackoverflow.com/questions/3885753/string-comparison-and-string-interning-in-java), в котором указывается, временные константы могут быть интернированы, поэтому два литерала заканчиваются ссылкой на один и тот же строковый объект. – Simon
Спасибо, симон, это то, что я ищу, :) – AAnkit