两者都可以用于对象的比较。"=="用于比较两个对象的内存地址值(引用值)是否相等,equals()方法用于比较两个对象的内容是否一致。
String str1 = new String("java");
String str2 = new String("java");
String str3 = str2;
str1和str2的内容完全一样,但是它两在堆内存中处于不同的内存位置,内存地址不同,所以str1==str2是FALSE!str1.equals(str2)是TRUE!
然而还需要注意的是,若对象类型的类为Object类或者Object类的子类,那么则需要覆写Object类中的equals方法才能准确的对两个对象内容进行比较,不然比较的是两个对象的地址比较。
//没有覆写equals()方法 class Person{ private String name; private int age; public Person(String name,int age){ this.name = name; this.age = age; } } class Object { public static void main(String[] args) { Person p1 = new Person("张三",12); Person p2 = new Person("张三",12); System.out.println(p1.equals(p2)?"是同一个人":"是两个人"); } }
程序运行结果为:是两个人。此时equals()就相当于"=="