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"));
}