Java中的final和Object类
目录修饰变量
- 基本类型(值不能改变)
- 引用类型(引用的地址不能改变)
- final修饰全局变量必须提前赋值
- final修饰局部变量可以不在声明的时候赋值,但必须在使用之前赋值
修饰方法
- 修饰的方法不能被重写(使用场景:如果一个类的某个方法不能被重写,那么可以用final关键字修饰)
修饰类(无后类)
- final修饰的类不能被继承
final可以防止指令重排序,保证线程安全
Object类
常见的方法
- equals()
- hashCode()
经典面试题
标签:hash,Object,hashCode,修饰,java,重写,final From: https://www.cnblogs.com/ning23/p/18134332为什么在重写equals方法时要重写hashCode方法(简便记忆:提高性能)
首先明白什么是hash冲突,其实也就是指的是hash值相同,
然后就是明白equals和hashCode方法之间的关系:
- 如果两个对象相同,那么他们的hash值肯定相同
- 如果两个对象不同,那么他们的hash值可能相同,也可能不同
- 如果两个对象的hash值相同,他们可能相同,也可能不同
- 如果两个对象的hash值不同,他们肯定不同
因此,如果只使用equals进行比较的话,那样效率比较低,而如果先使用hashCode获得hash值,如果hash值不能就直接返回false,否则继续进行比较,这样可以大大的提高效率,因此在重写equals方法时,要重写hashCode方法进行优化。