[进阶]Java:常用API-Object、Objects

Object类的作用:

  • 一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类
  • Object作为所有类的父类,提供了很多常用的方法给每个子类对象拿来使用。

Object类的常用方法:

 

Object的toString方法:

 代码演示如下:

学生类:

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

    public Student() {
    }

    public Student(String name, char 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 char getSex() {
        return sex;
    }

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

    public int getAge() {
        return age;
    }

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

测试类:

public class Test1 {
    public static void main(String[] args) {
        Student s = new Student("鸟儿",'男',21);
        String rs = s.toString();
        System.out.println(rs.toString());
        //直接输出对象变量,默认可以省略toString调用不写的
        System.out.println(s);
    }
}

运行结果如图:

 看到运行结果发现,写了toString和没有写没区别

问题引出

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

toString存在的意义

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

重写的方式可以通过Generate导入,也可以通过快捷键 toS 直接重写。

 

Object的equals方法:

 代码演示如下:

这里直接写测试类,学生类和上面的学生类一样

public class Test1 {
    public static void main(String[] args) {
        Student s1 = new Student("鸟儿",'男',21);
        Student s2 = new Student("鸟儿",'男',21);
        //equals默认是比较2个对象的地址是否相同。
        System.out.println(s1.equals(s2));// false
        System.out.println(s1 == s2);// false
    }
}

问题思考:

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

equals存在的意义

  • 为了被子类重写,以便子类自己来定制比较规则(比如比较对象内容)。

重写方式直接Generate导入。

 

Objects概述

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

官方在进行字符串比较时,没有用字符串对象的equals方法,而是选择了Objects方法来比较。

System.out.println(s1.equals(s2));// true  但留下了隐患,可能出现空指针异常
System.out.println(Objects.equals(s1,s2));//true 更安全 结果也是对的

 使用Objects的equals方法在进行对象的比较会更安全。

 

System.out.println(s1 == null);//false
System.out.println(Objects.isNull(s1));//false

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值