java工具类–
Objects工具类
在JDK7添加了一个Object类,提供了一些方法用来操作对象,它由一些静态的使用方法组成。这些方法是null – save(空指针安全)或null – tolerant(容忍空指针的),用于计算对象的hashcode、返回对象的字符串表示形式、比较两个对象
Objects类中的equals方法:对两个对象进行比较,防止空指针异常;
源码:
public static Boolean equals(Object a,Object b){
return (a == b) || (a != null && a.equals(b);)
}
代码演示:
import java.util.Objects;
/**
* Objects 工具类
*
* @author Administrator
* @date 2020-10-14 上午 11:00
*/
public class DemoObjects {
public static void main(String[] args) {
String one = null;
String two = "aBc";
/**
* Object.equals方法
* 用空字符串比较字符串"aBc",不会产生空指针异常
*/
boolean a = Objects.equals(one,two);
System.out.println(a);
}
}
输出结果为false
equals方法重写
定义一个Person,对equals方法进行重写,处理空指针异常;
public class Person {
/**
* 定义两个private变量 age,name
*/
private int age;
private String name;
/**
* 无参构造
*/
public Person() {
}
/**
* 构造方法
* @param age
* @param name
*/
public Person(int age, String name) {
this.age = age;
this.name = name;
}
/**
* equals方法重写,处理空指针异常
* 可以使用Alt+insert键选中其中equals,实现方法一键重写
* @param o
* @return
*/
@Override
public boolean equals(Object o) {
if (this == o){ return true;}
//getClass() != o.getClass()使用反射技术判断,判断o是否是Person类型;等效于(obj instanceof Person)
if (o == null || getClass() != o.getClass()){ return false;}
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(age, name);
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
使用重写的equals方法:
public class DemoEquals {
public static void main(String[] args) {
Person one = new Person(19,"李四");
Person two = new Person(19,"李四");
/**
*赋值null值给对象three
*/
Person three = new Person();
System.out.println(one);
System.out.println(two);
System.out.println(two == one);
System.out.println(one.equals(two));
/**
* 用null值对象three去比较one对象
*/
boolean b = one.equals(three);
System.out.println(b);
}
}
输出结果为:
com.yushi.study.fourthweek.thirdday.study.equalsmethod.Person@cdf5b
com.yushi.study.fourthweek.thirdday.study.equalsmethod.Person@cdf5b
false
true
false