如果面试官问Integer与int的区别:估计大多数人只会说道两点,Ingeter是int的包装类,int的初值为0,Ingeter的初值为null。但是如果面试官再问一下Integer i = 1;int ii = 1; i==ii为true还是为false?估计就有一部分人答不出来了,如果再问一下其他的,估计更多的人会头脑一片混乱。所以我对它们进行了总结,希望对大家有帮助。

package com.test;

/** * *@author 小光光 * */

public class TestInteger {

/** *@param args */

public static void main(String[] args) {

int i = 128;

Integer i2 = 128;

Integer i3 = new Integer(128);

//Integer会自动拆箱为int,所以为true

System.out.println(i == i2);

System.out.println(i == i3);

System.out.println("**************");

Integer i5 = 127;//java在编译的时候,被翻译成-> Integer i5 = Integer.valueOf(127);

Integer i6 = 127;

System.out.println(i5 == i6);//true

/*Integer i5 = 128; Integer i6 = 128; System.out.println(i5 == i6);//false */ Integer ii5 = new Integer(127);

System.out.println(i5 == ii5); //false

Integer i7 = new Integer(128);

Integer i8 = new Integer(123);

System.out.println(i7 == i8); //false

}

}

首先,17行和18行输出结果都为true,因为Integer和int比都会自动拆箱(jdk1.5以上)。

22行的结果为true,而25行则为false,很多人都不动为什么。其实java在编译Integer i5 = 127的时候,被翻译成-> Integer i5 = Integer.valueOf(127);所以关键就是看valueOf()函数了。只要看看valueOf()函数的源码就会明白了。JDK源码的valueOf函数式这样的:

public static Integer valueOf(int i) {

2 assert IntegerCache.high >= 127;

3 if (i >= IntegerCache.low && i <= IntegerCache.high)

4 return IntegerCache.cache[i + (-IntegerCache.low)];

5 return new Integer(i);

6 }

看一下源码大家都会明白,对于-128到127之间的数,会进行缓存,Integer i5 = 127时,会将127进行缓存,下次再写Integer i6 = 127时,就会直接从缓存中取,就不会new了。所以22行的结果为true,而25行为false。

对于27行和30行,因为对象不一样,所以为false。

我对于以上的情况总结如下:

①无论如何,Integer与new Integer不会相等。不会经历拆箱过程,i3的引用指向堆,而i4指向专门存放他的内存(常量池),他们的内存地址不一样,所以为false

②两个都是非new出来的Integer,如果数在-128到127之间,则是true,否则为false

java在编译Integer i2 = 128的时候,被翻译成-> Integer i2 = Integer.valueOf(128);而valueOf()函数会对-128到127之间的数进行缓存

③两个都是new出来的,都为false

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

如果大家觉得有什么不对的地方,欢迎指示。

java中 int 比较_java中Integer与int的种种比较你知道多少?相关推荐

  1. i10在java中什么意思啊_Java的Integer和int有什么區別

    Java是面向對象的編程語言,一切都是對象,但是為了編程的方便還是引入了基本數據類型,為了能夠將這些基本數據類型當成對象操作,Java為每一個基本數據類型都引入了對應的包裝類型(wrapper cla ...

  2. java大string排序_java中字符串排序,String 转化为int比较大小

    引入题目 题目描述 设有nnn个正整数(n≤20)(n≤20)(n≤20),将它们联接成一排,组成一个最大的多位整数. 例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213 ...

  3. java int 无穷小_JAVA中令人眼花撩乱的数字魔法

    五月的深圳空气中弥漫起初夏的味道,淡淡的,暖暖的.春日里不太张扬的阳光也掺入这股气息...(烟哥好文采!) 这天,烟哥愉快的喝着霸气芝士莓莓莓.一边东张西望,寻找着可以装13的机会.一切正如下面这张图 ...

  4. java int 十六进制_java中int使用十六进制

    在int类型中,进制的使用有十进制和十六进制的方法.在选择上很多人都有所困惑,不知道哪一种进制更好用.就位运算更加直观的表现出来而言,还是推荐使用十六进制.下面我们就十六进制的好处进行分析,同时以十六 ...

  5. Java实现float转换成int代码_Java中如何将float转换为long或int?(附代码)

    本篇文章给大家带来的内容是关于Java中如何将float转换为long或int?(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 在Java中,有三种方法可以将float转换 ...

  6. java byte转int原理_java中int与byte数组互转代码详细分析

    在java中,可能会遇到将int转成byte[]数组,或者将byte[]数组转成int的情况.下面我们来思考下怎么实现? 首先,分析int在java内存中的存储格式. 众所周知,int类型在内存中占4 ...

  7. java comparable接口作用_Java 中 Comparable 接口的意义和用法

    一, 为何需要实现Comparable接口 我们知道Collections类中包含很多对实现Collection接口的容器各种操作的静态方法. 当然, 其中最长用的莫过于排序了(Collections ...

  8. java中有没有栈_Java中堆和栈有什么区别

    stack 和 heep 都是内存的一部分stack 空间小,速度比较快, 用来放对象的引用heep 大,一般所有创建的对象都放在这里.栈(stack):是一个先进后出的数据结构,通常用于保存方法(函 ...

  9. java包装器类_Java中的基本类型和包装类

    Java中基本数据类型与包装类型有 基本类型 包装器类型 boolean Boolean char Character int Integer byte Byte short Short long L ...

最新文章

  1. 2022-2028年中国氢化环氧树脂产业发展动态及投资趋势预测报告
  2. C/S架构应用程序开发培训笔记
  3. matlab三角形旋转动态,新手向!用WebGL写一个旋转的动态三角形,总共分三步!!(注释超详细!!)...
  4. 分享你的见解与经验|RocketMQ Summit 2022 议题征集中
  5. python小细节之else
  6. #22. 【UR #1】外星人
  7. 使用Istio进行多集群部署管理:单控制平面 Gateway 连接拓扑
  8. 快速删除从CSDN复制的代码行前的数字的方法
  9. vmware虚机无法重启关机的强制处理办法
  10. python 帮助 help
  11. CSDN有奖任务答案
  12. P2010 [NOIP2016 普及组] 回文日期
  13. 库存进销存出入库销售mysql表结构_进销存数据库表结构设计.doc
  14. 【Linux系列文章】软件包管理
  15. hypothesisTest
  16. 文本分词并统计出现次数最高的几个词Python
  17. 斯塔克尔伯格竞争模型
  18. 跨境电商看不到另一面:商家刷单、平台封号、黑灰产牟利
  19. Oulipo(欧力波)(经典kmp模板题) HDU-1686
  20. PS如何给白衬衫换色

热门文章

  1. Android开发笔记——Android 9发送通知
  2. ESP8266开发笔记
  3. 深度解密之HDU3826(Square free number)
  4. 过 DNF TP 驱动保护(一)
  5. Spring Boot 核心知识,深入剖析!
  6. Mybatis SQL拦截器实现
  7. 理解HTTP协议中的multipart/form-data
  8. 未来,让我们一起想象— “Imagine”阿里云视频云全景创新峰会
  9. 视频内容理解在手淘逛逛中的应用与落地
  10. LiveVideoStackCon 2020北京站-售票通道关闭倒计时1天