Java基础知识总结复盘之Object类

151 阅读1分钟

Java基础知识总结复盘之Object类

  • Object是根基类,所有对象都是Object类型的对象
  • 提供了一些常用的方法,比如toString(),equals()...
  • Object类 位于java.lang 核心包 核心类

常用方法

1,toString()

  • 返回一个字符串,代表的是对象的字符串形式
  • 默认返回 类型信息+ hash值信息
  • 子类型都可以重写toString方法

2,equals

  • 比较两个对象是否相等(equals)
  • 子类型都可以重写equals方法 实现自己的比较规则,例如String就重写了

3,hashCode

  • 本地语言实现的(C,C++),不是java实现
  • 对象 的哈希值是int值,就好像人的身份证号码一样
  • 一个哈希值 可以唯一的代表某个对象
  • 如果两个对象相等,那么他们必须 具有相同的哈希值(重写equals, 也要重写hashCode方法)
  • 两个对象不相等,那么他们 应该具有不同的 哈希值(特例:两个对象不相等 ,哈希值居然相同 哈希冲突)

4,finalize

  • 自动调用的,当对象即将销毁(GC),GC 进行调用这个方法

5,clone

  • 根据源对象 克隆一个 新的对象
  • 要求类型实现接口 Cloneable

Objects类

  • 是一个工具类
  • 内部方法 主要用来解决 调用Object方法 出现空指针的情况
public static void main(String[] args) {
        Student stu1 = null;
        Student stu2 = new Student();
        //不对stu1做任何判断 直接调用equals方法或hashCode方法 则有可能报空指针异常
        System.out.println(stu1.equals(stu2));
        System.out.println(stu1.hashCode());
        // 工具方法内部有判断 不会有异常
        System.out.println(Objects.equals(stu1, stu2));
        System.out.println(Objects.hashCode(stu1));
        System.out.println(Objects.toString(stu1));
        System.out.println(Objects.isNull(stu1));
        System.out.println(Objects.nonNull(stu1));
    }
​
    private static void method5(String str) {
        //requireNonNull常用来做 参数的有效性校验
       /* if (str == null) {
            throw new NullPointerException("参数为null");
        }*/
        Objects.requireNonNull(str);
        System.out.println(str.hashCode());
        System.out.println(str.equals("y"));
    }