==:它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象(基本数据类型==比较的是值,引用数据类型==比较的是内存地址)。
equals():它的作用也是判断两个对象是否相等。但是它一般有两种使用情况:
- 情况一,类没有重写equals()方法,通过equals()比较该类的两个对象时,等价于通过“==”比较这两个对象;
- 情况二,类重写equals()方法,一般我们都重写equals()方法来比较两个对象的内容是否相等,若它们的内容相等,则返回true(即认为这两个对象相等)。
举个例子:
public class Test {
public static void main(String[] args) {
//a为一个引用
String a = new String("ab");
//b为另一个引用,对象的内容一致
String b = new String("ab");
//放在常量池中
String aa = "ab";
//从常量池中查找
String bb = "ab";
//true
if (aa == bb) {
System.out.println("aa==bb");
}
//false,非同一个对象
if (a == b) {
System.out.println("a==b");
}
//true
if (a.equals(b)) {
System.out.println("aEQb");
}
//true
if (18 == 18.0) {
System.out.println("true");
}
}
}