equals и == в Java
Оператор == в Java делает не совсем тоже самое что и в других языках. В Java он проверяет, являются ли переменные(или значения) одним и тем же объектом, в то время как в других языках(C++/php/etc.) этот оператор проверяет совпадает ли содержимое переменных.
Чтобы проверить равенство объектов на идентичность содержимого, нужно использовать функцию Object.equals(Object obj) для объекта, например mystring.equals(“Content”).
Пример :
public static void main(String[] args) {
String str1 = new String("MyName");
String str2 = new String("MyName");
System.out.print("str1 == str2 : ");
if (str1 == str2) {
System.out.print("true");
} else{
System.out.print("false");
}
System.out.print("\nstr1.equals(str2) : ");
if (str1.equals(str2)) {
System.out.print("true");
} else {
System.out.print("false");
}
String str3 = new String(str2);
System.out.print("\nstr3.equals(str2) : ");
if (str3.equals(str2)) {
System.out.print("true");
} else {
System.out.print("false");
}
System.out.print("\nstr3 == str2 : ");
if (str3 == str2) {
System.out.print("true");
} else{
System.out.print("false");
}
System.out.print("\nstr3 == MyName : ");
if (str3 == "MyName") {
System.out.print("true");
} else{
System.out.print("false");
}
}
Вывод программы :
str1 == str2 : false
str1.equals(str2) : true
str3.equals(str2) : true
str3 == str2 : false
str3 == MyName : false