equals
以后所有类的equals方法也需要重写,因为Object中的equals方法比较的是两个对象的内存地址,我们应该比较类容,所以需要重写
重写规则:自己定,主要看是什么和什么相等时表示两个对象相等
基本数据类型比较实用:==
对象和对象比较:调用equals方法
String类是SUN编写的,所以String类的equals方法重写了
以后判断两个字符串是否相等,最好不要使用==,要调用字符串对象的equals方法
String类已经重写了equals方法,比较两个字符串不能使用==,必须使用equals。equals是通用的。
String类已经重写了toString方法。
结论:
Java中什么类型的数据可以使用“==”判断
Java中基本数据类型比较是否相等,使用==
Java中什么类型的数据需要使用equals判断
Java中所有的引用数据类型统一使用equals方法来判断是否相等
protected Object clone() //负责对象克隆
int hashCode() //获取对象哈希值的一个方法
boolean equals(Object obj)//判断两个对象是否相等
String toString //将对象转换成字符串形式
protect void finalize() // 垃圾回收器负责调用的方法
toString()方法
以后所有类的toString()方法是需要重写的。
重写规则越简单越明了就好
System.out.println(引用);这里会自动调用“引用”的toString()方法
String类是SUN写的,toString方法已经重写了。
finalize()方法
1、在Object类中的源代码:
protected void finalize() throws Throwable{ }
2、finalize()方法只有一个方法体,里面没有代码而且这个方法是protected修饰的
3、这个方法不需要程序员手动调用,JVM的垃圾回收器负责调用这个方法。
4、finalize()方法的执行时机:
当一个java对象即将被垃圾回收器回收的时候,垃圾回收器负责调用finalize()方法
5、finalize()方法实际上是SUN公司为java程序员准备的一个时机,垃圾销毁时机。
如果希望对象销毁时机执行一段代码的话,这段代码要写到finalize()方法当中
6、静态代码块的作用是什么?
static{
…
}
静态代码块在类加载时刻执行,并且只执行一次
这是一个SUN准备的类加载时机
finalize()方法同样也是SUN为程序员准备的一个时机
这个时机是垃圾回收时机。
7、提示:
java中的垃圾回收器不是轻易启动的,垃圾太少,或者时间没到,种种条件下,有可能启动,也有可能不启动。