Java== 和 equals 的区别是什么?
在Java中,==
运算符和 equals()
方法有不同的用途,主要取决于它们被应用的对象类型。
-
==
运算符:-
比较基本数据类型: 对于基本数据类型(如 int、float、double 等),
==
用于比较它们的值是否相等。int x = 5; int y = 5; System.out.println(x == y); // 输出 true
-
比较对象引用: 对于对象引用,
==
用于比较对象的引用地址是否相等,即是否指向相同的内存地址。String str1 = new String("Hello"); String str2 = new String("Hello"); System.out.println(str1 == str2); // 输出 false,因为它们指向不同的内存地址
-
-
equals()
方法:-
比较对象内容:
equals()
方法用于比较对象的内容是否相等。通常,该方法需要在对象的类中进行适当的重写(override)以定义比较的逻辑。String str1 = new String("Hello"); String str2 = new String("Hello"); System.out.println(str1.equals(str2)); // 输出 true,因为它们的内容相同
-
默认行为: 对于许多Java类(如
String
、Integer
等),它们已经重写了equals()
方法,使其默认行为是比较对象的内容而不是引用。Integer num1 = new Integer(5); Integer num2 = new Integer(5); System.out.println(num1.equals(num2)); // 输出 true,因为它们的内容相同
-
总结:
==
用于比较基本数据类型的值或对象的引用地址。equals()
通常用于比较对象的内容,需要适当地在类中重写以定义比较逻辑。默认情况下,它比较对象的引用地址,因此在使用自定义类时,可能需要重写该方法。