首页 > 编程语言 >java中的final和Object类

java中的final和Object类

时间:2024-04-14 16:56:55浏览次数:16  
标签:hash Object hashCode 修饰 java 重写 final

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

标签:hash,Object,hashCode,修饰,java,重写,final
From: https://www.cnblogs.com/ning23/p/18134332

相关文章

  • Java登陆第四十二天——跨域
    浏览器拥有最基本的安全机制,同源策略。 违背同源策略的交互,会被浏览器认为是不安全的交互,所以不解析。什么是域?(源) 协议,域名,端口。什么是跨域? 访问不同的域。 即便协议,域名相同,端口号不一样也会违背同源策略。前后端分离后,前端服务器负责视图,后端服务器负责数据。 不......
  • JavaScript判断图片是否已经加载完毕的方法汇总_javascript技巧
    JavaScript判断图片是否已经加载完毕的方法汇总_javascript技巧 在网上有很多关于判断图片是否已经加载完毕的文章,但是有的浏览器并不适合,下面小编给大家分享一些有关JavaScript判断图片是否已经加载完毕方法汇总,具体内容如下所示:一.onload事件通过监听图片的onload事件,可......
  • java 单例模式
    单例模式(SingletonPattern)是Java中最简单的设计模式之一,这种类型的设计模式属于创建型模式。目的是确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。这样做可以节省系统资源,并且保证某些类在系统中只存在一个实例。主要解决:一个全局使用的类频繁地创建与......
  • java中的包装类
    java中的包装类为什么要有包装类在面向对象中“一切皆对象”,但是基本类型的数据不太符合这一理念,为了统一概念,因此,把基本类型包装成了引用类型的数据基本类型对象的包装类型,除了可以满足基本的类型的基本需求,还附加了其他的方法,例如:类型转化,数据类型之间的操作等等基本类型......
  • [javascript]知识点
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18031963出自【进步*于辰的博客】目录1、其他知识点链接2、严格模式3、类、对象3.1介绍3.2自定义对象3.2.1创建对象方法3.2.2建立继承关系4、变量5、this10、关于var与......
  • Evolutionary many-objective optimization algorithm based on angle and clustering
    Evolutionarymany-objectiveoptimizationalgorithmbasedonangleandclustering本文的工作本文提出了一种新的MaOEA,它使用锐角作为相似度量。通过聚类方法,最终将种群划分为若干个聚类,每个聚类中仅选择一个个体,以保持环境选择的趋同性和多样性。据我们所知,我们首先尝试利......
  • Java集合
    Java集合本文中引入的源码为JDK11什么是Java集合Java集合(Java集合类)是java数据结构的实现。Java集合类是java.util包中重要内容,它允许以各种方式将元素分组,并定义了各种使这些元素更容易操作的方法。Java集合类是Java将一些基本的和使用频率极高的基础类进行封装和增强后再......
  • ES7.17.20连接时报错:java.lang.NoSuchMethodError: org.elasticsearch.client.Request
    1.报错详情:java.lang.NoSuchMethodError:org.elasticsearch.client.RequestOptions$Builder.removeHeader(Ljava/lang/String;)Lorg/elasticsearch/client/RequestOptions$Builder; atco.elastic.clients.transport.rest_client.RestClientOptions.addBuiltinHeaders(RestCli......
  • java: 无法访问org.mybatis.spring.annotation.MapperScan、类文件具有错误的版本 61.
    使用的Mybatis-spring依赖的版本3.0.1太高,将版本改为2.2.2<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><depende......
  • 使用java client连接ES7.17.20时报错:Caused by: java.lang.NoClassDefFoundError: Cou
    1.报错详情Causedby:java.lang.NoClassDefFoundError:Couldnotinitializeclasscom.fasterxml.jackson.databind.cfg.DatatypeFeatures$DefaultHolder atcom.fasterxml.jackson.databind.cfg.DatatypeFeatures.defaultFeatures(DatatypeFeatures.java:33)~[jackson-data......