Object类:
-
Object类是所有Java类的根父类
-
如果在类的声明中未使用extends关键字指明其父类,则默认父类为java.lang.Object类
-
Object类中的功能(属性,方法)具有通用性
Object中的常用方法:
-
getClass:获取对象所属类
-
Clone 克隆方法
-
在对象被回收之前,会调用finalize方法 (永远不要主动调用某个对象的finalize方法,应该交给垃圾回收机制调用)
-
hashCode() 返回对象的哈希值
-
tostring()
-
equals()
等等......
首先:==
-
可以使用在基本数据类型变量和引用数据类型变量中
-
如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等。(不一定类型要相同)
-
如果比较的是引用数据类型变量:比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体(堆空间中)
-
==符号使用时,须保证符号左右两边的变量类型一致。
其次,equals
-
是一个方法,而非运算符
-
只适用于引用数据类型(因为类或者类的父类都继承了Object,所以对象能.出来)
-
object类中equals()的定义:
public boolean equals(Object obj) { return (this == obj); }
说明:
- Object类中定义的equals()方法和==的作用是相同的:比较两个对象的地址值是否相同,即两个引用是否指向同一个对象实体(堆空间中)
- 像String、Date、File、包装类等都重写了0bject类中的equals()方法。重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象的"实体内容"是否相同。
- 通常情况下,我们自定义的类如果使用equals()的话,也通常是比较两个对象的"实体内容"是否相同。那么,我们就需要对0bject类中的equals()进行重写
重写可自动实现,重写完成后,equals()方法比较的就是两个对象的实体内容了
补充:
像object类中toString()的使用:也是如此,当我们输出一个对象的引用时,实际上就是调用当前对象的toString(),我们也可以重写0bject类中的toString()方法,使得在调用对象的tostring()时,返回"实体内容"信息,像String. Date、File、包装类等都重写了0bject类中的toString()方法。
object类中toString()的定义:
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
可手动实现,也可自动生成