首页 > 基础资料 博客日记
Java中2个Integer比较相同的4种方式
2025-01-15 08:00:09基础资料围观516次
这篇文章介绍了Java中2个Integer比较相同的4种方式,分享给大家做个参考,收藏Java资料网收获更多编程知识
Java中2个Integer比较相同的4种方式
概要
使用前切记Integer的范围是 【 -128 ~ 127】
例如:Integer a = 128; Integer b = 128;
1,使用== 比较
【-128 ~ 127】区间内返回true,否则返回false
// == 比较
if (a == b){
System.out.println("a,b使用==比较 返回结果:true");
}else {
System.out.println("a,b使用==比较 返回结果:false");
}
返回false
2,使用equals比较
// equals比较
if (a.equals(b)){
System.out.println("a,b使用equals比较 返回结果:true");
}else {
System.out.println("a,b使用equals比较 返回结果:false");
}
返回true,因为点击内部equals方法发现,核心比较的Integer的intValue()值
// 点击equals时进入该方法
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
3,使用intValue比较
if (a.intValue() == b.intValue()){
System.out.println("a,b使用intValue比较 返回结果:true");
}else {
System.out.println("a,b使用intValue比较 返回结果:false");
}
返回true,核心比较的也是Integer的intValue()值
4,使用 compareTo比较
// compareTo比较
if (a.compareTo(b) == 0){
System.out.println("a,b使用compareTo比较 返回结果:true");
}else {
System.out.println("a,b使用compareTo比较 返回结果:false");
}
返回true,核心比较的是int值
// 点击compareTo时进入该方法
// 第一级
public int compareTo(Integer anotherInteger) {
return compare(this.value, anotherInteger.value);
}
// 第二级
public static int compare(int x, int y) {
return (x < y) ? -1 : ((x == y) ? 0 : 1);
}
总结
Integer大于127后不能用==比较的原因是因为Java的自动装箱机制和Integer对象的缓存机制,如果是在区间内则从缓存中获取返回,否则创建一个新的Integer对象,源码如下:
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}

如果你要赋的值在这【-128 ~ 127】区间内,他就会把变量a,b当做一个个变量,放到内存中;但如果不在这个范围内,就会去new一个Integer对象
经过测试,
1》 Integer在【-128 ~ 127】范围内时,4个方法返回都是true,
2》 小于-128或者大于127时,==返回是false,其余3种方法返回的都是true。
创作不易,尊重知识,转载请附带本文链接
文章来源:https://blog.csdn.net/rain_is_my_name/article/details/143708343
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- HEIC 批量转 JPG - 一键转换苹果 HEIC 格式为 JPG/PNG,保留 EXIF 信息,支持批量处理
- 【php】老旧PHP项目(PHP 5.6)本地环境搭建与踩坑记录
- Vue3 轻量安全滑动拼图验证码:vue-sliding-puzzle 上手全攻略
- 多市场行情时间戳对齐:UTC 存储的夏令时陷阱与数据库设计方案
- 15. 别再硬写提示词了!LangChain ChatPromptTemplate核心实战
- 一次 OOM 线上排查实录
- 从控制论看 Harness Engineering:当反馈回路终于能在"重要的地方"闭合
- AI 测试全场景提效:功能 / 性能 / 安全 / 自动化,用 AI 重塑测试工作流
- 你真的理解 volatile 关键字了吗?
- .NET 11 Preview 4 震撼发布:MAUI 抛弃 Mono,全量迁移 CoreCLR,性能与 NativeAOT 双炸场!

