java中常用API-Object,Objects

常用API-Object,Objects

Object
Object类的作用:

1.一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类。

2.Object作为所有类的父类,提供了很多常用的方法给每个子类对象拿来使用。

Object类的两种常用方法:

toString()和equals()
在这里插入图片描述

Object的toString方法:开发中直接输出对象,默认输出对象的地址其实是毫无意义的。开发中输出对象变量,更多的时候是希望看到对象的内容数据而不是对象的地址信息。

所以toString方法存在的意义是:父类toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息!!

Object的equals方法:直接比较两个对象的地址是否相同完全可以用“==”替代equals。同时,开发中很多业务情况下,更想判断2个对象的内容是否一样。

所以equals存在的意义:为了被子类重写,以便子类自己来定制比较规则(比如比较对象内容)。

示例:我们定义一个Student类

public class Student {
    private String name;
    private String sex;
    private int age;

    public Student() {
    }

    public Student(String name, String sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

   

我们定义一个test类,写main方法,在main方法new 一个Student对象,返回这个对象toString方法

  public class test {
            public static void main(String[] args) {
                Student s = new Student("李白","男",18);
                System.out.println(s.toString());

    }
}

得到结果是s的地址;在这里插入图片描述

得到结果没有什么意义。我们根据自己需要在Student类重写toString方法,这个直接返回对象中的值。

@Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", sex='" + sex + '\'' +
                ", age=" + age +
                '}';
    }

运行结果
在这里插入图片描述

修改test

   public class test {
            public static void main(String[] args) {
                Student s1 = new Student("李白","男",18);
                Student s2 = new Student("李白","男",18);

                System.out.println(s1.equals(s2));
    }
}

运行结果:
在这里插入图片描述

因为地址不同,所以返回false,所以我们需要在在Student类重写equals方法。

@Override
    public boolean equals(Object o) {
        if (this == o) return true;
        //判断是不是同一对象
        if (o == null || getClass() != o.getClass()) return false;
        //判断对象是否为空或比交对象与被比较对象是否是同一类
        Student student = (Student) o;
        //强制转换,将o变成Student对象
        return age == student.age && Objects.equals(name, student.name) && Objects.equals(sex, student.sex);
    }

运行结果:
在这里插入图片描述

1.Object的toString方法的基本作用是什么,存在的意义是什么?

基本作用:给子类继承,子类对象调用可以返回自己的地址。

意义:让子类重写,以便返回子类对象的内容。

2.1.Object的equals方法的基本作用,存在的意义是什么?

基本作用:默认是与另一个对象比较地址是否一样

存在的意义:让子类重写,以便比较对象的内容是否相同。

Objects
Objects是什么?

Objects是一个工具类,提供了一些方法去完成一些功能。

Objects的常用方法

equals和isNull
在这里插入图片描述

官方在进行字符串比较时,没有用字符串对象的的equals方法,而是选择了Objects的equals方法来比较。因为使用Objects的equals比较更加安全,当a对象null不会报异常。

示例:新建test类

import java.util.Objects;

        public class test {

            public static void main(String[] args) {
                String s1 = "蔡徐坤";
                String s2 = "小黑子";
                String s3 =  null;
                String s4 = "蔡徐坤";
                System.out.println(Objects.equals(s1,s2));
                System.out.println(Objects.equals(s1,s4));
                System.out.println(Objects.equals(s3,s4));
    }
}

运行结果:
在这里插入图片描述

至于i是Null与==是一样,但isNull看起来更加专业更加容易理解。

1.对象进行内容比较的时候建议使用什么?为什么?

建议使用Objects提供的equals方法

比较的结果是一样的,但是更安全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值