操作符 == 和!= 对于基本类型比较是其内容,但对于对象则是比较其引用。
方法 equals() 不适用于基本类型的比较,适合对象之间的比较。但其默认行为也是比较对象的引用。
Java 类库中大多数都实现了equals() 方法,来比较对象之间的内容,而不是比较对象的引用。
比较对象,预期结果都是 False, 实现了equals() 方法后,比较结果为True
基本数据类型Integer对象比较, n1 == n2 ?: false
自定义类对象比较, t1 == t2 ?: false
已实现 equals()方法对象的比较, s1 == s2 ?: true
方法 equals() 不适用于基本类型的比较,适合对象之间的比较。但其默认行为也是比较对象的引用。
Java 类库中大多数都实现了equals() 方法,来比较对象之间的内容,而不是比较对象的引用。
class Test {
int value;
}
public class Operator {
public static void main(String[] args) {
int i1 = 10;
int i2 = 10;
System.out.println("基本数据类型比较, i1 == i2 ?: " + (i1 == i2));
Integer n1 = new Integer(10);
Integer n2 = new Integer(10);
System.out.println("基本数据类型Integer对象比较, n1 == n2 ?: " + (n1 == n2));
Test t1 = new Test();
Test t2 = new Test();
t1.value = t2.value = 10;
System.out.println("自定义类对象比较, t1 == t2 ?: " + (t1 == t2));
String s1 = new String("aaa");
String s2 = new String("aaa");
System.out.println("已实现 equals()方法对象的比较, s1 == s2 ?: " + s1.equals(s2));
}
}
比较对象,预期结果都是 False, 实现了equals() 方法后,比较结果为True
==================================================
基本数据类型比较, i1 == i2 ?: true基本数据类型Integer对象比较, n1 == n2 ?: false
自定义类对象比较, t1 == t2 ?: false
已实现 equals()方法对象的比较, s1 == s2 ?: true
==================================================