о_О
Окееей... не знал, спасибо хд
Хотя ==
всегда срабатывал...
Я недавно узнал отличие == от equals...
Рассмотрим небольшой пример:
public static void main(String[] args) {
String str1 = new String("m25");
String str2 = new String("m25");
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
}
Получаем вот это:
Но почему раньше я сравнивал строки через ==, и никаких проблем не было?
Дело в том, что можно немного видоизменить код:
public static void main(String[] args) {
String str1 = "m25";
String str2 = "m25";
System.out.println(str1 == str2);
System.out.println(str1.equals(str2));
}
И только тогда строки будут нормально сравниваться через ==
Непонятно, почему так происходит.
В конструкторе String говорится:
Initializes a newly created String object so that it represents the same sequence of characters as the argument; in other words, the newly created string is a copy of the argument string. Unless an explicit copy of original is needed, use of this constructor is unnecessary since Strings are immutable.
Как я понял, этот конструктор что-то вроде заменителя метода clone для строки.
А если присваивать строке значение обычным способом, то получаем некую стандартную ссылку...