Loading

Java基础之——Object类的基本使用

概述

在Java中所有的类都直接或间接继承了java.lang,Object类,Object是所有类的父类

当定义一个类没有extends关键字显式指定继承的父类,编译器自动加上extends java.lang.Object


Object类中主要包括的方法有:

  • clone()
  • finalize()
  • equals()
  • toString()

所有的类都可以重写Object类的方法

Object中的getClass()、notify()、notifyAll()、wait()等方法不能被重写,因为这些方法被定义为final类型

getClass()

作用:返回对象执行时的Class实例,然后使用此实例调用getName()方法可以取得类的名称

语法:getClass().getName()

toString()

作用:将一个对象返回为字符串形式

打印本类对象
String s = test.getClass().getName();
System.out.println(s);

equals()

==与equals的区别:

==比较的是两个对象的引用是否相等,而equals方法比较的是两个对象的实际内容

equals默认实现是使用==比较两个对象的引用地址,所以想要比较对象的内容,需要重写该方法

String、Interger、Double等许多类已经覆盖了Object类中的equals()方法,功能改为比较两个对象的内容是否相等

如果覆盖了equals()方法,则必须覆盖hashCode()

public boolean equals(Object obj) {
    return (this == obj);
}

clone()

作用:用于对象内容的备份

  • 基本类型:直接用赋值语句实现
  • 引用类型:
    • 对象地址的备份(即指针,在Stack存储),使用赋值语句
    • 对象内容的备份(在Heap堆中存储),使用clone()方法

clone()方法只能实现浅层次的备份(只复制引用类型对象成员的地址,不复制引用类型对象成员引用的对象的内容)

public class Main {
    public static void main(String[] args) {
        //基本数据类型变量的备份
        int i = 100;
        int j = i;
        
        //引用类型
        HashSet<Character> hs1 = new HashSet<Character>();
        hs1.add('a');
        hs1.add('b');
        
        //地址的备份
        HashSet<Character> hs2 = hs1;
        
        //内容的备份
        HashSet<Character> hs3 = (HashSet)hs1.clone();
    }
}

hashCode()

作用:返回该对象的HashCode(哈希码)(由当前对象地址转换而成的一个整数)

因此可以通过HashCode来唯一地标识一个对象

finalize()

垃圾回收器按一定的规律回收堆内存中的垃圾

一个对象变为垃圾,指该对象的内存空间没有指针指向(即该对象没有被引用)

posted @ 2021-03-27 15:42  qinuna  阅读(169)  评论(0编辑  收藏  举报