Object

本文详细介绍了Java中Object类的常用方法toString(), equals(), finalize()的作用和重写规则。toString()用于对象转字符串,equals()默认比较对象引用,应重写以比较内容,finalize()涉及垃圾回收机制,主要用于特殊情况下释放资源。理解这些方法对于Java编程至关重要。
摘要由CSDN通过智能技术生成

Object

常见方法

方法作用
protected object clone()负责对象兑隆的
int hashCode ()获取对象哈希值的一个方法
boolean equals (object obj)判断两个对象是否相等
string tostring ()将对象转换成字符串形式
protected void finalize()垃圾回收器负责调用的方法

toString()

String类已经重写toString方法

以后所有类的toString()方法都是需要重写的。

重写规则

越简单越明了就好。

	System.out.println(引用); //这里会自动调用“引用”的toString()的方法

equals()

String类已经重写了equals方法

以后所有的类的equals方法也要进行重写,因为Object中的equals方法比较的是两个对象的内存地址,我们应该比较内容,所以需要进行重写。

重写规则

自己定,主要看是什么和什么相等时表示两个对象相等。

finalize()的用途

  1. ​ 如果对象不是通过new关键字创建的,那么垃圾回收器是无法回收该对象的。因此允许在类中实现一个finalize()方法。
    ​ 它的工作原理"假定"是这样的:当垃圾回收器准备回收对象的内存时,首先会调用其 finalize() 方法,并在下一轮的垃圾回收动作发生时,才会真正回收对象占用的内存。
    ​ 无论对象是如何创建的,垃圾回收器都会负责释放对象所占用的所有内存。这就将对 finalize() 的需求限制到一种特殊情况,即通过某种创建对象方式之外的方式为对象分配了存储空间。
    ​ 这种情况主要发生在使用"本地方法"的情况下,本地方法是一种用 Java 语言调用非 Java 语言代码的形式。(在非 Java 代码中,也许会调用 C 的 malloc() 函数系列来分配存储空间,而且除非调用 free() 函数,不然存储空间永远得不到释放,造成内存泄露。但是,free() 是 C 和 C++ 中的函数,所以你需要在 finalize() 方法里用本地方法调用它。)
  2. finalize()方法不是专门清理使用的,因此需要我们自己创建一些清理方法,并进行调用。例如:将打开的文件关闭,将打开的流关闭等。这样这个对象就会处于某种状态,这种状态下它占用的内存可以被安全地释放掉。
  3. finalize()的奇特用法—对象终结条件验证—它可以对上述的”某种状态“进行检验,即程序中存在没有被适当清理的部分。它可以发现它们,从而找到问题所在。
  4. java的垃圾回收器是自适应的。Java虚拟机将内存分块。
    有了块,垃圾回收器就可以把对象复制到废弃的块。每个块都有年代数来记录自己是否存活。通常,如果块在某处被引用,其年代数加 1,垃圾回收器会对上次回收动作之后新分配的块进行整理。这对处理大量短命的临时对象很有帮助。垃圾回收器会定期进行完整的清理动作——大型对象仍然不会复制(只是年代数会增加),含有小型对象的那些块则被复制并整理。Java 虚拟机会监视,如果所有对象都很稳定,垃圾回收的效率降低的话,就切换到"标记-清扫"方式。同样,Java 虚拟机会跟踪"标记-清扫"的效果,如果堆空间出现很多碎片,就会切换回"停止-复制"方式。这就是"自适应"的由来,你可以给它个啰嗦的称呼:"自适应的、分代的、停止-复制、标记-清扫"式的垃圾回收器。
  5. JIT技术(即时编译技术),一般采用惰性评估的方式。即时编译器只有在必要的时候才编译代码。这样,从未被执行的代码也许就压根不会被 JIT 编译。代码每被执行一次就优化一些,所以执行的次数越多,它的速度就越快。

总结

  • java中基本数据类型比较是否相等,使用 ==
  • java中所有的引用数据类型统一使用equals方法来判断是否相等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值