Object类

Object类是类层次结构的根类。每个类都使用 Object 作为超类,包括我们手动创建的类,即使没有明确用extends关键字继承Object类,java虚拟机也自动让

我们手动创建的类继承了Object类。

学习一个类,要从构造方法开始:

public Object()

Object类的构造方法只有一个,并且是无参构造,这其实就是理解当时我们说过,子类构造方法默认访问父类的构造是无参构造。

Object类没有成员参数,下面是成员方法:

比较常用的有:

toString();返回对象的字符串表示,默认是由类的全路径+'@'+哈希值的十六进制表示。


结果为:java.lang.Object@15db9742

那么这个结果是怎么出来的?咱们可以看一下Object中toString()的源代码:


从源代码中可以看出toString()方法返回的结果是以个拼接而成的字符串,下面说一下字符串的组成:

getClass():这个方法返回的是Object运行时类,它的返回值是Class,这个Class是一个类,它表示的是字节码文件对象。这个类的详细信息可以手动查看API。

getName():首先说明,这个方法不是Object类中的成员方法,这个方法是Class类中的成员方法,作用是获取调用该方法的对象的类

Integer.toHexString(hashCode()):这段表示把调用Object类的对象中的成员方法获取的哈希码值,用Integer.toHexString()方法转换成十六进制表示,结果就是:15db9742 

但是一般使用Object中的toString()方法得到“java.lang.Object@15db9742”这样的值没有意义。所以继承了Object类的子类一般都会重写此方法。

equals() :比较两个对象是否相同。默认情况下,比较的是地址值是否相同。

源代码如下:


可以看出equals使用的是==比较的,而==符号比较的就是对象在内存中的地址值,比较地址值意义不大,所以一般子类也会重写该方法。

hashCode():返回对象的哈希值。不是实际地址值,是通过将对象的内部地址通过哈希算法算出来的一个值,这个值可以理解为地址值。

getClass() 返回对象的字节码文件对象。上面toString方法中有具体的getClass()解释。

finalize() :用于垃圾回收。当一个对象的引用不存在时,某个时间,由对象的垃圾回收器调用此方法回收该对象。

clone() :可以实现对象的克隆,包括成员变量的数据复制,但是它和两个引用指向同一个对象是有区别的。

不过这个方法不能直接使用,需要待克隆的对象的类重写此方法,而且此类还要实现一个Cloneable接口,这个接口指示Object.clone()方法可以合法地对该类实例进行按字段复制。这个Cloneable接口中没有成员方法,这种没有方法的接口叫标记接口。

Object类中剩下的几个方法与多线程有关,在多线程中有详细解释。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值