1. Objects类
1.1Objects.equals(a,b) 【Objects类方法】优化 判断是否相等空指针的问题【a.equals(b)【Object类方法】
-
public static boolean equals(Object a, Object b)
:判断两个对象是否相等。【Objects类中的equals方法】
-
public boolean equals(Object obj)
:指示其他某个对象是否与此对象“相等”。【Object类中equals方法】
例如
Person p1 = new Person(null, 1);
Person p2 = new Person("老王", 1);
boolean results1 = p1.getName().equals(p2.getName());
boolean results2 = Objects.equals(p1.getName(), p2.getName());
System.out.println(results1);
System.out.println(results2);
result1 会报空指针异常
result2 会返回false
源码解释如下:
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
如果b为null???
解释 :
a==b,a和b都可以为null;
a != null && a.equals(b) 排除了a为null的情况。
1、equals ():用来检测两个对象是否相等,即两个对象的内容是否相等。
2、==:用于比较引用和比较基本数据类型时具有不同的功能,具体如下:
(1)基础数据类型:比较的是他们的值是否相等,比如两个int类型的变量,比较的是变量的值是否一样。
(2)引用数据类型:比较的是引用的地址是否相同
补充
父类 Object中的equals 方法
如果是 String 类型 s1.equals(s2)比较的是内容
如果是自己创建的Person类型
Person p1 = new Person("老王", 1);
Person p2 = new Person("老王", 1);
对象 p1.equals(p2)
没有重写之前直接比较的是两个对象的地址值
在Person类中重写之后比较的是对象的内容