#Object类
1.protected Object clone(): 创建并返回此对象的一个副本。
2. boolean equals(Object obj):指示其他某个对象是否与此对象“相等”。
3.protected void finalize():gc之前,JVM调用。
4.String toString(): 返回该对象的字符串表示。
5.int hashCode(): 返回该对象的哈希码值,为哈希表提供部分算法。
#cloneable接口:sun为clone()定义了规范,实现cloneable接口才可以实现克隆
写给JVM,不需要重写任何方法,是标记接口
#实现克隆
1.实现Cloneable接口
2.重写Clone(),改访问权限
#finalize()是在JVM在GC完成之前自动调用的,但GC不受该方法影响
一般可以在该方法中释放一些非关键资源
关键资源最好还是程序员控制释放,比如:数据库连接
#equals()用于比较对象之间的相等
equals起源:
Student s1=new Student(1,"li");
Student s2=new Student(1,"li");
现实世界中,s1==s2
计算机中,s1!=s2
在java中,运算符不可以重写,所以在Object中定义了对象比较相等的方法(equals),然后子类可以根据自己的比较原则对该方法进行重写
#==比较的是内存的地址,equals()可以根据自己的需要进行重写。
Object中,equals()和==相同,因为是用==实现的
public boolean equals(Object obj)
#关于equals和==的应用:
1.基本类型的比较用==
2.引用类型和null比较用==
3.引用类型的比较用equals
4.引用类型的地址比较用==
#从语法上来说,equals和hashCode是独立的,但java中定义的hashCode的规范,使得两个方法连在一起。equals为true的两个对象,哈希码必须相同。
#重写equals,必须也要重写hashCode。
API规定:“当此方法被重写时,通常有必要重写 hashCode 方法,以维护 hashCode
方法的常规协定,该协定声明相等对象必须具有相等的哈希码。”
#当System.out.println/print打印对象时
+字符串连接对象时
自动调用对象的toString()。
#一般来说,类都建议重写toString()方法
下面介绍常用的重写方式(程序按需求重写方法,需求不一样,重写的方法便不一样):
#equals(Object obj):
@Override
public boolean equals(Object obj){
}
#toString()
@Override
public String toString(){
}
#hashCode()
@Override
public int hashCode(){
}
本文深入探讨Java中Object类的相关方法,包括clone()、equals()、finalize()、toString()、hashCode()等,详细解释了它们的功能、用法及应用场景。重点介绍了如何实现克隆、equals()方法的重写以及它们在对象比较、打印和哈希表中的应用。通过实例代码,清晰展示了Java对象操作的核心概念。
770

被折叠的 条评论
为什么被折叠?



