Object类,属于Java.lang包,是默认引入的
Object类是类层次结构的根类,每个object类使用Object类作为超类(父类)
所有对象(包括数组)都继承了Object中的方法
介绍Object中典型的几个方法:
equals() :判断某个对象是否与此对象相同
==,比较运算符,可以判断基本类型,可以判断引用类型
如果判断基本数值类型,则判断的是两者数值是否相等
如果判断引用类型,则判断的是两者的地址是否相同
equals,Object中的方法,只能用于判断引用类型
equals()方法默认判断两个引用类型的地址是否相同
// Object中的equals方法
public boolean equals(Object obj) {
return (this == obj); // 比较的是两个对象的地址
}
子类中大多会重写equals方法:
实现根据自己的标准判断两个对象是否相等
// String类中的equals方法:
public boolean equals(Object obj) {
// 首先判断两个对象的地址是否相同
if (obj == this) {
return true; // 说明是同一个对象,直接返回true
}
// 判断传入的对象是否是String的子类
if (obj instanceof String) {
// 如果是的话,将其从Object类转为String类继续进行比较
String anotherString = (String)obj;
int n = value.length; // 记录字符串的长度
// 两个字符串的长度相同,继续进行比较
if (n == anotherString.value.length) {
// 定义字符数组,存储两个字符串中的每个字符
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
// 挨个比较每个字符是否相等
if (v1[i] != v2[i])
return false;
i++;
}
// 完成每个字符的比较
return true;
}
}
// 如果不是String的子类,则直接返回false
return false;
}
finalize():当垃圾回收器确定不存在对该对象的更多引用时,由垃圾回收期调用该方法
某个对象没有任何引用的时候,JVM就会认为该对象是一个垃圾对象,使用垃圾回收机制销毁该对象
某个对象被回收或者销毁时,系统就会自动调用该对象的finalize方法
垃圾回收机制,是由系统(自己的算法GC)来决定什么时候进行调用,也可以通过System.gc()主动调用垃圾回收机制
子类重写该方法,可以做一些释放资源的操作:数据库的连接或打开、关闭文件
getClass():返回该对象的运行时类
hashCode():返回该对象的哈希码值
hashCode()方法可以提高哈希结构容器的效率
哈希值主要是根据地址号来的,但是不能将哈希值等同于对象的地址
两个引用如果指向同一对象,即同一地址,则其哈希值相同;如果指向不同的对象,即不同地址,则其哈希值不同
toString():返回该对象的字符串表示
// Object中的toString方法:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
// getClass().getName()得到的是全类名--包名+类名
// Integer.toHexString(hashCode())得到的是该对象的哈希值转为十六进制字符串的形式
}
子类中往往重写Object中的toString方法,返回对象的属性
直接输出一个对象时,默认调用该对象的toString方法