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

Java基础的128陷阱

package com.qcby;public class Main {public static void main(String[] args) {Integer a = 100;Integer b = 100;System.out.println(a == b);a = 1000;b = 1000;System.out.println(a == b);}
}

当运行这个代码之后第一个输出为true,第二个输出为false

这是因为超出了范围导致输出为false,也就是128陷阱

128陷阱:数值在-128-127之间的数值都存储在有一个catch数组中,当该数组相当于一个缓存,当我们在-128-127之间进行自动装箱的时候,我们就直接返回该值在数组当中的地址,所以在-128-127之间的数值用==进行比较是相等的。而不在这个区间的数,需要新开辟一个内存空间,所以不相等

根据Integer.java源码中的内容可以更好的理解

Integer里面有一个valueOf的方法,当在low和high的范围中就会返回这个内容,但是不在这个范围内就会返回一个new的Integer

    public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);}

在图片中可以看到low=-128,high=127,也就是说当在-128—127之间就会返回true,其余值就会返回false

http://www.dtcms.com/a/337847.html

相关文章:

  • BAS16XV2T1G ON安森美半导体 高速开关二极管 电子元器件IC
  • 【本地部署问答软件Apache Answer】Answer开源平台搭建:cpolar内网穿透服务助力全球用户社区构建
  • JVM 垃圾回收基础原理:深入探索内存自动管理机制
  • 决策树学习报告
  • 决策树的基本学习
  • 接口文档——前后端分离开发模式下的“契约书“
  • 科伦博泰:商业化引爆点已至,冲向Biopharma的“最后一公里”
  • B4265 [朝阳区小学组 2019] rectangle
  • JavaWeb前端02(JavaScript)
  • Python常用的GUI模块
  • 软考 系统架构设计师系列知识点之杂项集萃(129)
  • illustrator插件大全 免费插件介绍 Ai设计插件集合 (4)
  • 东软8位MCU使用问题总结
  • 深度学习必然用到的概率知识
  • 视觉语言导航(6)——Speaker-Follower模型 数据增强 混合学习 CLIP 3.1后半段
  • GISBox平台的三维城市模型自动化生成系统
  • 《Python学习之第三方库:开启无限可能》
  • 决策树:机器学习中的强大工具
  • 一些常见的聚类算法原理解析与实践
  • 【OLAP】trino安装和基本使用
  • BadNets: Identifying Vulnerabilities in the Machine Learning Model Supply Chain
  • 机器学习之数据预处理(一)
  • 深度学习-计算机视觉-微调 Fine-tune
  • 【MongoDB】多种聚合操作详解,案例分析
  • Java文件操作/IO
  • RabbitMQ高级特性——TTL、死信队列、延迟队列、事务、消息分发
  • 【展厅多媒体】互动地砖屏怎么提升展厅互动感的?
  • python基于机器学习进行数据处理与预测(火灾的三因素回归问题)
  • 探索机器学习:从核心概念到实战应用
  • 精通sqlmap tamper:WAF绕过实战技巧剖析