在 Java 中,== 运算符和 equals() 方法有着不同的作用:
== 运算符:
== 用于比较两个变量的值是否相等(对于基本数据类型)或者比较两个对象的引用是否指向同一个内存地址(对于引用类型)。
对于基本数据类型(例如 int, char, boolean 等),== 比较的是它们的值是否相等。
对于引用类型(例如对象),== 比较的是对象的引用地址是否相同,即是否指向内存中的同一个对象。
int a = 5;
int b = 5;
System.out.println(a == b); // 输出 true,因为 a 和 b 的值相等
String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1 == str2); // 输出 false,因为 str1 和 str2 的引用地址不同
equals() 方法:
equals() 方法是用于比较两个对象的内容是否相等。在 Object 类中,equals() 方法的默认实现是比较对象的引用地址(即与 == 运算符相同)。
很多类(例如 String、Integer 等)都重写了 equals() 方法,使其用于比较对象的内容是否相等,而不是比较引用地址。
String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1.equals(str2)); // 输出 true,因为 String 类重写了 equals 方法,比较的是内容是否相等
总结:
== 比较的是变量(或对象引用)的值或引用地址是否相等。
equals() 方法比较的是对象的内容是否相等。但需要注意,某些类需要重写 equals() 方法以实现内容比较,否则默认是比较引用地址。