equals()与==运算符
==运算符:
比较变量时,正常进行值比较;比较对象时,进行地址比较,判定是否为同一对象
equals():
a.equals(b)是Object类中的方法,被String类等内置类重写,用于比较两个对象的值是否相等;而在没有重写该方法的自定义类中,equals默认调用Object类中的方法,判断两个对象是否相同,是否为同一地址。
hashCode()
AA aa = new AA();
System.out.println("aa.hashCode()=" + aa.hashCode());
- 提高具有哈希结构的容器的效率
- 两个引用,如果指向的是同一个对象,则哈希值肯定一样。
- 两个引用,如果指向的是不同对象,则哈希值肯定不一样。
- 哈希值主要是根据地址号来的,不能完全将哈希值等价于地址。
- 后面在集合中,hashCode如果需要的话,也会重写。
toString()
默认返回:全类名 + @ + 哈希值的十六进制
子类往往重写该方法,用于返回对象的属性信息 Alt+Insert -> toString
当直接输出对象时,toString方法会被默认的调用,如
System.out.println(monster); //就会默认调用 monster.toString()
finalize()
- 当对象被回收时,系统自动调用该对象的finalize方法。子类可以重写该方法,写入业务逻辑代码,如释放资源。如果不重写,就会调用Object类的finalize方法,即默认处理。
- 什么时候会被回收:当某个对象没有任何引用时(引用指向了null或指向了其他对象),jvm就会认为它是一个垃圾对象,会使用垃圾回收机制销毁该对象,并在此之前调用finalize方法。
- 垃圾回收机制的调用,是由系统来决定(即自己的GC算法),也可以通过System.gc()主动触发垃圾回收机制。