首页 > 编程语言 >JAVA面试题总结归纳

JAVA面试题总结归纳

时间:2022-08-31 13:55:46浏览次数:51  
标签:面试题 JAVA 字节 归纳 对象 equals hashCode 引用

问题一:JAVA的原始数据类型有哪些,它们的大小以及其对应的封装类是什么?

数据类型 对应大小 对应的封装类
boolean 1bit,boolean类型单独使用是4个字节,而在数组中又是1个字节 Boolean
byte 1byte 1字节 Byte
short 2bytes 2字节 Short
int 4bytes 4字节 Integer
long 8bytes 8字节 Long
float 4bytes 4字节 Float
double 8bytes 8字节 Double
char 2bytes  2字节 Character

问题二:谈一谈"=="和"equals()"区别

关系操作符生成的是一个boolean结果,它们计算的是操作数的值之间的关系。

"=="判断的是两个对象的内存地址是否一样,适用于原始数据类型和枚举类型(它们的变量存储的是值本身,而引用类型变量存储的是引用);equals是Object类的方法,Object对它的实现是比较内存地址,我们可以重写这个方法来自定义"相等这个概念"。

综上,对于枚举类型和原始数据类型的相等性比较,应该使用"==";对于引用类型的相等性比较,应该使用equals方法。

问题三:Java的四种引用以及其应用场景是什么?

强引用:通常我们使用new操作符创建一个对象时所返回的引用就是一个强引用。

软引用:若一个对象只能通过软引用到达,那么这个对象在内存不足时会被回收,可用于图片缓存中,内存不足时系统会自动回收不再使用的Bitmap。

弱引用:若一个对象只能通过弱引用到达,那么它就会被回收(即使内存充足),同样可用于图片缓存中,这个时候如果Bitmap不再使用就会被回收

虚引用:虚引用是JAVA中最弱的引用,通过它甚至无法获取被引用的对象,它存在的唯一作用就是当它指向的对象回收时,它本身会被加入到引用队列中,这样我们可以知道它指向的对象何时会被销毁。

问题四:Object中定义了哪些方法?

clone()、equals()、hashCode()、toString()、notify()、notifyAll()、wait()、finalize(),getClass();

问题五:hashCode的作用是什么?

哈希算法也称为散列算法,是将数据依特定算法直接指定到一个地址上。这样一来,当集合要添加新的元素时,先调用这个元素的HashCode方法,就一下子能定位到它应该放置的物理位置上。

(1)如果这个位置上没有元素,它就可以直接存储在这个位置上,不用再进行任何比较了;

(2)如果这个位置上已经有元素了,就调用它的equals方法与新元素进行比较,相同的话就不存了;

(3)不相同的话,也就是发生了Hash key相同导致冲突的情况,那么就在这个Hash key的地方产生一个链表,将所有产生相同HashCode的对象放到这个单链表上去,串在一起。这样一来实际调用equals方法的次数就大大降低了。 

 所以hashCode在上面扮演的角色为寻域(寻找某个对象在集合中区域位置)。hashCode可以将集合分成若干个区域,每个对象都可以计算出他们的hash码,可以将hash码分组,每个分组对应着某个存储区域,根据一个对象的hash码就可以确定该对象所存储区域,这样就大大减少查询匹配元素的数量,提高了查询效率。

 

标签:面试题,JAVA,字节,归纳,对象,equals,hashCode,引用
From: https://www.cnblogs.com/longlyseul/p/16642850.html

相关文章

  • smile——Java机器学习引擎
    资源https://haifengl.github.io/https://github.com/haifengl/smile介绍Smile(统计机器智能和学习引擎)是一个基于Java和Scala的快速、全面的机器学习、NLP、线性代数、......
  • 【Java学习Day11】变量种类及命名规范
    变量变量是什么:就是可以变化的量Java是一种强类型语言,每个变量都必须声明其类型Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域typevarNa......
  • java 实现逻辑分页
    //逻辑分页PageModelmodel=newPageModel();longtotal=list.size();model.setTotal(total);model.setPageNum(pageNum);model.setPageSize(pageSize);longpage=tot......
  • Java:将Excel转换为XPS
    Excel文档具有存放、处理数据等功能,用途十分广泛。有时为了满足不同的工作需要,我们需要将Excel文件进行文档格式转换。将Excel文件转换为XPS文件就是其中一种。XPS是一种版......
  • 简单的java代码审计
    描述很简单的代码审计java安全——Fastjson反序列化java安全——SQL注入Fastjson反序列化首先看一下配置文件,对于Maven项目,我们首先从pom.xml文件开始审计引入的第......
  • Java中如何将String转化成int数组?
    publicstaticvoidStringToIntArray(){Stringstring="1,2,3,4,5,6";Stringstr[]=string.split(",");intIntArray[]=newint[str.length];for(inti=0;i<str.le......
  • 从Java 9 到 Java 17 新特性梳理
    Java9新的创建集合的方法 //[1,2,3,4] List<Integer> integers = List.of(1, 2, 3, 4); //{1,2,3} Set<Integer> integerSet = Set.of(1, 2,......
  • 肖sir_自动化遇到问题归纳
    自动化中遇到的问题:=====================================1、动态元素定位不到解决方法:尽量使用固定元素定位,如没有固定元素,则采用绝对路径进行定位,因为元素路径是唯一且......
  • JavaScript Fundamentals – Part 2
    Functions(函数)functionlogger(){console.log('MynameisShubham');}//calling/running/invokingfunction(调用/运行/调用函数)logger();//Myname......
  • java 实体类命名
    阿里巴巴Java开发手册中的DO、DTO、BO、AO、VO、POJO定义分层领域模型规约:DO(DataObject):与数据库表结构一一对应,通过DAO层向上传输数据源对象。DTO(DataTransferObjec......