java中的final和Object类
Java中的final和Object类
修饰变量
- 基本类型(值不能改变)
- 引用类型(引用的地址不能改变)
- final修饰全局变量必须提前赋值
- final修饰局部变量可以不在声明的时候赋值,但必须在使用之前赋值
修饰方法
- 修饰的方法不能被重写(使用场景:如果一个类的某个方法不能被重写,那么可以用final关键字修饰)
修饰类(无后类)
- final修饰的类不能被继承
final可以防止指令重排序,保证线程安全
Object类
常见的方法
- equals()
- hashCode()
经典面试题
为什么在重写equals方法时要重写hashCode方法(简便记忆:提高性能)
首先明白什么是hash冲突,其实也就是指的是hash值相同,
然后就是明白equals和hashCode方法之间的关系:
- 如果两个对象相同,那么他们的hash值肯定相同
- 如果两个对象不同,那么他们的hash值可能相同,也可能不同
- 如果两个对象的hash值相同,他们可能相同,也可能不同
- 如果两个对象的hash值不同,他们肯定不同
因此,如果只使用equals进行比较的话,那样效率比较低,而如果先使用hashCode获得hash值,如果hash值不能就直接返回false,否则继续进行比较,这样可以大大的提高效率,因此在重写equals方法时,要重写hashCode方法进行优化。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?