核心区别:
==比较的是内存地址,equals比较的是值
1.对于基本数据类型来说,只有 == 没有equals
2.对于字符串来说, ==比较的是内存地址,equals比较的是字符串内容是否相等
public class Test {
public static void main(String[] args) {
String a="abc";
String b="abc";//如果字符串常量池中有相同内容的值,那么,b和a的引用地址都指向abc
String c=new String("def");//new 操作实例化的对象内存地址不同
String d=new String("def");
System.out.println(a ==b);
System.out.println(a.equals(b));
System.out.println(c ==d);
System.out.println(c.equals(d));
}
}
// true
// true
// false
// true
3.对于对象来说 ==比较的是内存地址,equals比较的是值
public class Test {
public static void main(String[] args) {
Person p1=new Person(20,"张三");
Person p2=new Person(21,"李四");
Person p3=new Person(20,"张三");
System.out.println(p1 ==p2);
System.out.println(p1.equals(p2));
System.out.println(p1 ==p3);
System.out.println(p1.name.equals(p3.name));
// false
// false
// false
// true
}
}
class Person{
int age;
String name;
public Person(int age,String name){
this.age=age;
this.name=name;
}
}