Я знаю, что в Java две строки обычно должны сравниваться с использованием метода .equals(), а использование == только сравнивает места памяти. Тем не менее, я написал этот тестовый код очень быстро в Eclipse, и он возвращает true, и никто, с которым я работаю, не может понять, почему. Было ли обновление Java для поддержки прямых сравнений строк, и никто не осознал или не сходил с ума? Переполнение стека не позволит мне опубликовать изображение консоли, но оно напечатает правду.Почему это сравнение строк работает?
Вот код:
public class Thing {
public static void main(String[] args){
String ar = "fish";
String ar2 = "fish";
System.out.println(ar == ar2);
}
}
Компилятор, вероятно, видел оптимизацию. Нет причин хранить строковый литерал в два раза. Таким образом, они имеют одинаковую ссылку. – user489041
Похоже, что компилятор может интернировать строку для вас –
, потому что коммандер smart java не создает одну и ту же строку дважды. – dit