当前位置: 首页 > article >正文

Integer和int的比较大小

背景导读

(1)== 和 equals 区别


使用 == 进行比较时

Integer和int比较大小

包装类Integer和基本数据类型int比较时,java会自动拆箱为int然后进行比较,实际上就变为两个int变量的比较,本质为值比较

int a = 128;
Integer b = 128;
Integer c = new Integer(128);

System.out.println(a == b); // true
System.out.println(a == c); // true

Integer和Integer比较大小

case1:数值命中缓存

Integer缓存范围是[-128 ~ 127]

Integer d1 = 100;
Integer d2 = 100;
System.out.println(d1 == d2); // true

Integer d3 = 127;
Integer d4 = 127;
System.out.println(d3 == d4); // true

Integer d5 = -128;
Integer d6 = -128;
System.out.println(d5 == d6); // true

case2:数值在缓存之外

超出缓存范围,都会在堆中new出一个对象来存储

Integer d7 = 128;
Integer d8 = 128;
System.out.println(d7 == d8); // false

Integer d9 = -129;
Integer d10 = -129;
System.out.println(d9 == d10); // false

case3:数值和对象

变量b是java常量池中存储的引用(指向堆中的对象)
变量c指向堆中新建的对象
两者在内存中的地址不同

Integer b = 128;
Integer c = new Integer(128);
System.out.println(c == b); // false

Integer b = 127;
Integer c = new Integer(127);
System.out.println(c == b); // false

case3:对象和对象

new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同)

Integer c = new Integer(128);
Integer c1 = new Integer(128);
System.out.println(c1 == c); // false

Integer e = new Integer(127);
Integer f = new Integer(127);
System.out.println(e == f); // false

使用equals进行比较时

case1:数值命中缓存

Integer缓存范围是[-128 ~ 127]

Integer e = 127;
Integer f = 127;
System.out.println(e.equals(f)); // true

case2:数值在缓存之外

Integer e = 128;
Integer f = 128;
System.out.println(e.equals(f)); // true

case3:数值和对象

Integer e = new Integer(128);
Integer f = 128;
System.out.println(e.equals(f)); // true

case3:对象和对象

Integer e = new Integer(128);
Integer f = new Integer(128);
System.out.println(e.equals(f)); // true

http://www.kler.cn/a/1024.html

相关文章:

  • C#调用OpenCvSharp实现图像的开运算和闭运算
  • 贪心算法笔记
  • 解读若依微服务架构图:架构总览、核心模块解析、消息与任务处理、数据存储与缓存、监控与日志
  • 后端技术选型 sa-token校验学习 中 文档学习
  • 超详细-java-uniapp小程序-引导关注公众号、判断用户是否关注公众号
  • 《解锁鸿蒙系统AI能力,开启智能应用开发新时代》
  • HelloWorld
  • python并发编程多线程
  • QT VTK开发 (一、下载编译)
  • wait 和 notify
  • Cadence Allegro 导出Netin(back anno.)报告详解
  • Ununtu环境下的判断字符串相等出现sh: xxx: [: xxx: unexpected operator的问题
  • QT Plugin 插件开发
  • 跨境老兵多年经验整理出的WhatsApp养号攻略分享
  • 漫画:什么是归并排序算法?
  • Adam优化器算法详解及代码实现
  • ubuntu不同版本的源(换源)(镜像源)(lsb_release -c命令,显示当前系统的发行版代号(Codename))
  • 【Android笔记85】Android之使用Camera和MediaRecorder录制视频
  • Java的jar包打包成exe应用
  • K8S集群之-ETCD集群监控
  • 有图解有案例,我终于把 Condition 的原理讲透彻了
  • 几个cve漏洞库查询网站-什么是CVE?常见漏洞和暴露列表概述
  • Android 自定义view优化方案
  • spring事务 只读此文
  • Go panic的学习
  • 初识C++需要了解的一些东西(2)