2020-10-14java笔记

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值