java如何比较
比较基本数据类型
在Java中,基本数据类型(如int、double、char等)可以直接使用==运算符进行比较。例如:

int a = 5;
int b = 5;
boolean isEqual = (a == b); // true
比较对象类型
对于对象类型(如String、自定义类),==比较的是对象的引用地址。要比较对象的内容,需使用equals()方法:

String str1 = new String("hello");
String str2 = new String("hello");
boolean isRefEqual = (str1 == str2); // false
boolean isContentEqual = str1.equals(str2); // true
实现自定义比较
若需自定义类的比较逻辑,需重写equals()和hashCode()方法(遵循契约:相等的对象必须有相同的哈希值):
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
MyClass other = (MyClass) obj;
return this.field1.equals(other.field1) && this.field2 == other.field2;
}
使用Comparable或Comparator接口
对于排序或复杂比较,可让类实现Comparable接口(自然排序),或使用Comparator(灵活排序):
// 实现Comparable
class Person implements Comparable<Person> {
@Override
public int compareTo(Person other) {
return this.age - other.age;
}
}
// 使用Comparator
Comparator<Person> byName = Comparator.comparing(Person::getName);
比较数组或集合
- 数组:使用
Arrays.equals()或Arrays.deepEquals()(多维数组)。 - 集合:直接调用
equals()方法(如list1.equals(list2)),需元素顺序和内容一致。
注意事项
- 浮点数比较建议使用
Double.compare()或阈值法(如Math.abs(a - b) < 1e-10)。 - 避免
equals()中的空指针异常,可使用Objects.equals(a, b)。






