1. ==
运算符
-
比较的是对象的引用(内存地址),判断两个对象是否指向堆内存中的同一块地址。
-
对于基本数据类型(如
int
,char
,double
等),==
直接比较的是值是否相等。 -
对于引用类型(如
String
, 自定义类对象等),==
比较的是引用是否相同(即是否为同一个对象)。
java
String s1 = new String("hello");
String s2 = new String("hello");
String s3 = s1;
System.out.println(s1 == s2); // false(不同对象,地址不同)
System.out.println(s1 == s3); // true(s3 和 s1 指向同一个对象)
2. equals()
方法
-
默认行为与
==
相同 (比较引用),但通常被重写(Override)用于比较对象的内容是否逻辑相等。 -
例如,
String
、Integer
等类重写了equals()
,使其比较的是对象的值而非引用。 -
如果自定义类需要比较内容,必须重写
equals()
(同时通常也要重写hashCode()
)。javaString s1 = new String("hello"); String s2 = new String("hello"); System.out.println(s1.equals(s2)); // true(String 重写了 equals,比较字符内容)
3. 总结
-
共同点:都是用于比较操作
-
不同点:用
==
判断是否为同一个对象(或基本类型的值相等)。
用 equals()
判断对象的内容是否逻辑相等(需注意是否被正确重写)。