您的位置 首页 java

老白带你学java基础 – 面试官口中常提的 java 基本类型

java有8中基本类型,地球人都知道,但是在面试的时候,面试官关注的往往是更深层的含义,这里以问答的形式,向读者展示容易被忽略的内容。

问:有了 int类型,为何还要有 Integer 对象

考点:基本类型和包装类之间的关联

回答:基本类型并不具有对象的性质,为了给基本类型添加属性,方法,让其具有对象的特征,就出现了包装类型,另外,在ArrayList, HashMap 等容器中存储对象时,就要用到这些基本类型的包装器类,因为容器都是装在object对象的,基本类型是存不进去的。

问: 以下说法正确吗,case如下

  • Integer a1=127,Integer a2=127,表达式 a1==a2 的值是true吗?
  • Integer a1=128,Integer a2=128,表达式 a1==a2 的值是 false 吗?
  • Double b1=127.0,Double b1=127.0,表达式 b1==b2 的值是false吗?
  • Double b1=128.0,Double b1=128.0,表达式 b1==b2 的值是false吗?
  • Boolean c1 = false,Boolean c2 = false,那么表达式 c1==c2 的值是true吗?

考点:java的自动装箱与拆箱

回答:以上表达式的结果值均正确

自动装箱、拆箱是为了简化了基本数据类型和其对应的对象之间的转化过程。

比如 Integer a=1,这就是一个自动装箱过程,如果java不提供自动装箱功能的话,我们需要这样表达Integer a=new Integer(1);同理int b=a;就是一个自动拆箱的过程,如果没有自动拆箱的话,需要这样:int b=a.intValue();

那么问题来了,为什么对于整数类型 127 和 128 不同 , 浮点数 却相同呢?

这是因为Integer在创建对象的时候,如果数值在[-128,127]之间,从 缓存 对象池中获取已经缓存的Integer对象而不是新建一个对象,其中Integer、 Short 、Byte、 Long 都是类似的实现,而对于 Double 、Float 来说,就没有缓存池的概念,所以,每次都创建一个新的对象,这就是以上判断题引出知识点。

文章来源:智云一二三科技

文章标题:老白带你学java基础 – 面试官口中常提的 java 基本类型

文章地址:https://www.zhihuclub.com/185249.shtml

关于作者: 智云科技

热门文章

发表回复

您的电子邮箱地址不会被公开。

网站地图