在Java中,equals 方法和 == 运算符用于比较对象,但它们之间有重要的区别:
-
==运算符:==运算符用于比较两个对象的引用是否相同,即它们是否指向内存中的同一个地址。- 对于基本数据类型(如
int,char等),==运算符比较的是它们的值。
-
equals方法:equals方法是Object类中的一个方法,用于比较两个对象的内容是否相同。- 默认情况下,
equals方法的行为与==运算符相同,但许多类(如String,Integer等)都重写了equals方法,以比较对象的内容而不是引用。
示例
使用 == 比较对象引用
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1 == str2); // 输出 false,因为 str1 和 str2 是不同的对象,尽管内容相同
使用 equals 比较对象内容
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1.equals(str2)); // 输出 true,因为 str1 和 str2 的内容相同
总结
==:比较对象的引用是否相同。equals:比较对象的内容是否相同(需要类重写equals方法)。