final、finally、finalize是三个在Java中容易混淆的关键字,它们的含义和用法不同。
final:用于修饰变量、方法和类。当变量被修饰为final时,其值不能被更改;当方法被修饰为final时,子类不能重写该方法;当类被修饰为final时,该类不能被继承。finally:与try-catch语句结合使用,无论是否发生异常,都会执行finally语句块中的代码。finalize:是一个对象的方法,垃圾回收器在回收对象之前调用该方法。但不建议使用该方法,因为垃圾回收不是实时的,无法保证finalize()方法一定会被调用。
在重写equals方法时,一定要重写hashCode方法。这是因为在Java中,hashCode用于确定一个对象在哈希表中的位置,而equals方法则用于判断两个对象是否相等。如果两个对象相等,它们的hashCode值一定要相同;否则,哈希表中就会出现同一对象的多个副本,从而影响哈希表的性能。因此,重写equals方法时,一定要同时重写hashCode方法,以保证它们的一致性。