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

Java基础--128陷阱

问题引入

Integer a = 123;
Integer b = 123;
System.out.println(a==b);

结果为true。

但是如果代码如下

 Integer a = 1230;Integer b = 1230;System.out.println(a==b);

这个的结果就是false。

问题解决

当Integer  a = 123时,其实他底层自动转换成了Integer a = Integer.valueOf(123)。

然后他就会判断i的大小是否超过了IntegerCache的最小值和最大值。

最小值他设定的是-128,最大值是根据不同系统虚拟机决定的。一般来说是127。

如果i在这个范围之间,i的值就会放入cache静态数组中,所有对象共享同一个cache数组,如果不在就直接new一个新的对象。

如果放入cache数组中只要valueOf的还是i的值,他就共享为原来这个地址。

所以就出来了true的情况。

false的情况就是放入了超出范围的值,new了新的对象,所以比对的是地址,所以不同就很正常。

相关文章:

  • 5、Jenkins持续集成-Maven和Tomcat的安装与配置
  • 哨兵位、链表的链接
  • PTAxt的考研路
  • Python爬虫学习完整版
  • Rust 实战练习 - 4. 网络 TCP/UDP/Channel
  • 两台电脑简单的通信过程详解(经过两个路由器,不同网段)
  • Vue js封装接口
  • Mybatis-01
  • 51单片机学习笔记10 IIC通讯和EEPROM
  • 2024/3/23 蓝桥杯
  • 洁盟、苏泊尔、希亦超声波清洗机哪家好?全方位实测对比谁更强
  • 网络七层模型:理解网络通信的架构(〇)
  • Spring 面试——restcontroller/requestmapping
  • git新建一个项目如何合并其他项目
  • 异步引入组件
  • 【译】理解JavaScript:new 关键字
  • C++类中的特殊成员函数
  • ES6语法详解(一)
  • FastReport在线报表设计器工作原理
  • iOS | NSProxy
  • Java读取Properties文件的六种方法
  • Making An Indicator With Pure CSS
  • mysql外键的使用
  • Redis 中的布隆过滤器
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Redux 中间件分析
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • springboot_database项目介绍
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 如何编写一个可升级的智能合约
  • 如何用vue打造一个移动端音乐播放器
  • 异步
  • nb
  • Java性能优化之JVM GC(垃圾回收机制)
  • ​2021半年盘点,不想你错过的重磅新书
  • ​香农与信息论三大定律
  • # 计算机视觉入门
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • $().each和$.each的区别
  • (python)数据结构---字典
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (ZT)北大教授朱青生给学生的一封信:大学,更是一个科学的保证
  • (八十八)VFL语言初步 - 实现布局
  • (全注解开发)学习Spring-MVC的第三天
  • (转) Android中ViewStub组件使用
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET 8.0 中有哪些新的变化?
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .Net 知识杂记
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .net2005怎么读string形的xml,不是xml文件。
  • .netcore 获取appsettings
  • .NET程序员迈向卓越的必由之路
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)