Object根类(equals、hashCode、toString、finalize)

equals

== 与 equals 的对比:

==是一个比较运算符:

1. 既可以判断基本类型,也可以判断引用类型

2. 如果判断基本类型,判断的是值是否相等。e.g. int i = 10; double d = 10.0;

3. 如果判断引用类型,判断的是地址是否相等,即判定是不是同一个对象

equals方法:

1. 是 Object 类中的方法,只能判断引用类型(选中方法后,ctrl + b 查看 JDK 源码)

2. equals方法默认判断的是地址是否相等。子类中往往重写该方法,用于判断内容是否相等,如:Integer(判断两个值是否相同)、String(比较两个字符串的值是否相同)

equals的重写: 

 

省略get set方法

char 的本质是整数

最后一个因为 “hello” 和 new java.sql.Date() 类型不同,所以编译不通过

hashCode

1. 提高具有哈希结构的容器的效率

2. 两个引用,如果指向的是同一个对象,则哈希值肯定是一样的

3. 两个引用,如果指向的是不同对象,则哈希值是不一样的

4. 哈希值主要根据地址号来的,不能完全将哈希值等价于地址

toString

默认返回:全类名 + @ + 哈希值的十六进制

子类往往重写 toString 方法,用于返回对象的属性信息 

结果:

重写 toString 方法,打印对象或拼接对象时,都会自动调用该对象的 toString 形式

当直接输出一个对象时,toString 方法会被默认的调用。如:

finalize方法

实际几乎不会用

1. 当对象被回收时,系统自动调用该对象的 finalize 方法。子类可以重写该方法,做一些释放资源的操作

2. 什么时候被回收:当某个对象没有任何引用时,则 JVM 就认为这个对象是一个垃圾对象,就会使用垃圾回收机制来销毁该对象,在销毁该对象前,会先调用 finalize 方法

3. 垃圾回收机制的调用,是由系统来决定的(即有自己的GC算法),也可以通过 System.gc() 主动触发垃圾回收机制

演示 finalize 的用法

结果:

并不是有一个对象变成垃圾,它马上就回收,它有自己的一套算法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值