Java面试题15牛客 以下关于Integer与int的区别错误的是

A int是java提供的8种原始数据类型之一

B Integer是java为int提供的封装类

C int的默认值为0

D Integer的默认值为1

懵逼树上懵逼果,懵逼树下你和我,这题难度一般,很显然,答案为D

Java是面向对象的编程语言,一切都是对象,但是为了编程的方便还是引入了基本数据类型,为了能够将这些基本数据类型当成对象操作,Java为每一个基本数据类型都引入了对应的包装类型(wrapper class),int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换,对应如下:

原始类型:boolean,char,byte,short,int,long,float,double

包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double

顺便一提,Java中的基本数据类型只有以上8个,除了基本类型(primitive type),剩下的都是引用类型(reference type)。

所以最基本的一点区别是:Ingeter是int的包装类,int的初值为0,Ingeter的初值为null。除此之外还有区别,请看代码:

public class TestInteger { public static void main(String[] args) { int i = 128; Integer i2 = 128; Integer i3 = new Integer(128); System.out.println(i == i2); //Integer会自动拆箱为int,所以为true System.out.println(i == i3); //true,理由同上 Integer i4 = 127;//编译时被翻译成:Integer i4 = Integer.valueOf(127); Integer i5 = 127; System.out.println(i4 == i5);//true Integer i6 = 128; Integer i7 = 128; System.out.println(i6 == i7);//false Integer i8 = new Integer(127); System.out.println(i5 == i8); //false Integer i9 = new Integer(128); Integer i10 = new Integer(123); System.out.println(i9 == i10);  //false } }  

为什么i4和i5比是true,而i6和i7比是false呢?关键就是看valueOf()函数了,这个函数对于-128到127之间的数,会进行缓存, Integer i5 = 127时,会将127进行缓存,下次再写Integer i6 = 127时,就会直接从缓存中取,就不会new了。所以i4和i5比是true,而i6和i7比是false。

而对于后边的i5和i8,以及i9和i10,因为对象不一样,所以为false。

以上的情况总结如下:

1,无论如何,Integer与new Integer不会相等。不会经历拆箱过程,new出来的对象存放在堆,而非new的Integer常量则在常量池(在方法区),他们的内存地址不一样,所以为false。

2,两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false。因为java在编译Integer i2 = 128的时候,被翻译成:Integer i2 = Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存。

3,两个都是new出来的,都为false。还是内存地址不一样。

4,int和Integer(无论new否)比,都为true,因为会把Integer自动拆箱为int再去比。

我是歌谣,如果有什么不合理之处,欢迎指出,闲下来不如刷刷题。

阅读目录(置顶)(长期更新计算机领域知识)

阅读目录(置顶)(长期更新计算机领域知识)

阅读目录(置顶)(长期科技领域知识)

歌谣带你看java面试题

Java面试题15牛客 以下关于Integer与int的区别错误的是相关推荐

  1. Java面试题18 牛客 假定Base b = new Derived();

    Java面试题18 牛客 假定Base b = new Derived(); 调用执行b.methodOne()后,输出结果是什么? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  2. java面试题29 牛客 以下关于集合类ArrayList、LinkedList、HashMap描述

    java面试题29 牛客 以下关于集合类ArrayList.LinkedList.HashMap描述错误的是() A HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或 ...

  3. java面试题28 牛客 下面有关java classloader说法错误的是?

    java面试题28 牛客 下面有关java classloader说法错误的是? A Java默认提供的三个ClassLoader是BootStrap ClassLoader,Extension Cl ...

  4. java面试题23 牛客ArrayLists和LinkedList的区别,下述说法正确的有?

    java面试题23 牛客ArrayLists和LinkedList的区别,下述说法正确的有? A ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构. B 对于随 ...

  5. Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持

    Java面试题 22 牛客 Java是一门支持反射的语言,基于反射为Java提供了丰富的动态性支持,下面关于Java反射的描述,哪些是错误的:(          ) A Java反射主要涉及的类如C ...

  6. Java面试题17 牛客 下面哪个选项正确创建socket连接?

    Java面试题17 牛客 下面哪个选项正确创建socket连接? Socket s = new Socket(8080); Socket s = new Socket("192.168.1. ...

  7. Java面试题16 牛客 以下java程序代码,执行后的结果是()

    Java面试题16 牛客 以下java程序代码,执行后的结果是() 1 2 3 4 5 6 7 8 9 10 public class Test {     public static void ma ...

  8. Java面试题19 牛客下面有关java的引用类型,说法正确的有?

    Java面试题19下面有关java的引用类型,说法正确的有? A:对于一个对象来说,只要有强引用的存在,它就会一直存在于内存中 B:如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可 ...

  9. java面试题11 牛客:如下语句通过算术运算和逻辑运算之后i和 j的结果是

    如下语句通过算术运算和逻辑运算之后i和 j的结果是( ) 1 2 3 4 5 6 int i=0; int j=0; if((++i>0)||(++j>0)) { //打印出i和j的值. ...

最新文章

  1. Go 学习笔记(4)— Go 标识符、数据类型之间转换、布尔型、整型、浮点型、interface 类型
  2. C++中指向类的指针
  3. Strut2与Hibernate的一个web分页功能
  4. 《Groovy语言规范》-语法(三)
  5. Java黑皮书课后题第8章:*8.25(马尔可夫矩阵)一个n*n的矩阵,如果每个元素都是正数,并且每列的元素的和为1,则成为正马尔可夫矩阵。编写下面的方法来检测矩阵是否是马尔可夫矩阵
  6. 导入BaiduMapSdkDemo报230错误解决思路
  7. jsp mysql servlet_JSP+Servlet+JDBC+mysql实现的学生成绩管理系统
  8. Manacher算法 - 求最长回文串的利器
  9. 设计思想之高内聚低耦合
  10. linux python pymssql,如何在UbuntuLinux上将pymssql安装到Python3.4而不是2.7?
  11. [android视频教程] 传智播客android开发视频教程
  12. 中标麒麟服务器中安装达梦数据库(DM7)的具体步骤
  13. 安卓手机投屏到win10电脑
  14. element ui实现抽屉效果_如何给element添加一个抽屉组件
  15. matlab r2021b校园正版软件安装过程的问题及解决方案记录
  16. blos硬盘启动台式计算机,怎么进bios设置硬盘启动顺序|电脑bios硬盘启动设置方法...
  17. Java.MapReduce处理全国各省市疫情数据,上传Hadoop平台处理后的数据
  18. 微信小程序上传文件详解
  19. 如何把一个网页设置快捷方式放到桌面上去,或者手机桌面当App一样使用
  20. 仙之侠道2玖章各个任务详情_仙之侠道2玖章给Z武器的任务 | 手游网游页游攻略大全...

热门文章

  1. 《迷宫》之站立会议—5.15
  2. [bbk5307]第76集 第9章 -数据库性能维护 03
  3. 解决Tocmat6.x的catalina.out日志不断增加问题
  4. window 下分linux分区,如何在windows9x下访问linux分区
  5. 纵横公路造价软件学习_通辽分公司组织开展2020年 养护工程造价预算培训
  6. 颈椎前路caspar撑开器_“骨质增生”导致的颈椎病怎么破?
  7. crc算法java_c语言的crc16算法转java
  8. 三级分类菜单的数据库设计
  9. MSP432P401R TI Drivers 库函数学习笔记(二)认识TI-RTOS (TI-POSIX)
  10. 为CEDIT添加有颜色的边框