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方法进行优化。

posted @   ning12  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示