------- android培训、java培训、期待与您交流! --------
Object
Object:所有对象的根类,是不断抽取而来的,具备着所有对象都具备的内容。
相等性(==):(1)对于原生数据类型,比较的是左右的值是否相等
(2)对于引用数据类型,比较左右两边的引用是否指向同一对象,或者说是左右两边的引用地址是否相同。
Equals():该方法定义在Objrct类中,因此java中每个类都有这个方法,对于Object类中的equals方法来说,他判断的是引用与传进来的引用是否一致,即这两个引用是否指向同一对象。对呀Object类的equals方法来说,他等价于==。
对于String类中的equals方法被重写了,他判断的是当前字符串与传进来的字符串内容是否一致
对于String对象的相等性判断来说,请用equals方法,不要用==
toSring:当打印 引用时,实际上会打印引用所指的对象的toString方法返回值(返回该对象的字符串表示),因为每个类都直接或间接地继承Object,而Object类中都定义了toString(),因此每个类都有toString(这个方法
1)clone() 用于复制对象,分为深克隆和浅克隆
Unhandled exceptiontypeCloneNotSupportedException
浅克隆:需要覆盖clone方法,调用super.clone()
修饰符改为public,因为Object中是protected
需要处理CloneNotSupportedException异常
浅拷贝对深层次的属性引用不新创建对象
深拷贝:
也是需要覆盖clone方法,修饰符改为public,无需处理异常
需要对属性进行对象空间的创建,封装成新的对象返回
2)equals() 用于比较两个对象的值是否相等
==的比较方式:
i. 基本类型的比较用==
ii. 引用类型和null的比较使用==
iii. 引用类型用==,比较的是内存地址,是同一个对象
如果想比较对象的值,而不是地址,采用Object中的equals方法
equals方法比较的是内容,而不是地址。
3)hashCode() 返回对象的hash编码值
Java规定:equals为true的两个对象,其hashCode必须相同
一般hashCode()方法伴随equals()方法出现,配合其使用 从而进行hashCode()方法的覆盖
4)getClass() 获得此对象的类对象(Class类型)
5)toString() 返回对象的字符串表达
默认的toString方法继承自Object
public String toString() {
return getClass().getName() + "@"+Integer.toHexString(hashCode());
}
返回的是包名.类名@hashCode值的十六进制数
toString方法的调用时机:
i. print、println对象引用时,隐式调用toString()
ii. 显示调用
iii. 用+运算符进行字符串拼接时也会隐式调用toString()
6)finalize() 垃圾回收时调用的代码,由于不可控,不推荐使用
一般用于最后资源的释放工作
我们可以建议JVM进行垃圾收集 System.gc();
但是无法强制JVM启动GC线程,所以finalize()方法不可控