微知识:java 中 long 类型使用==比较几种不同情况
本文发布于 2024年08月28日,阅读 15 次,点赞
1 次,归类于
微知识
在Java中,long
是基本数据类型,而Long
是对应的包装类。这两者之间在使用==
进行比较时行为有所不同,具体取决于操作数的类型。
1、当两个操作数都是基本类型long
时
==
会比较它们的数值是否相等。
long a = 900000001L;
long b = 900000001L;
if (a == b) {
// 这个条件会成立,因为a和b的数值相等
}
2、当两个操作数都是包装类型Long
时
使用==
会比较它们的引用是否相同,而不是数值内容。如果两个Long
对象是由不同的new
操作创建的,或者它们不在Java的自动装箱缓存范围内(即不在-128
到127
之间),那么即使它们的数值相等,==
比较也会返回false
。
Long c = 900000001L; // 自动装箱
Long d = 900000001L; // 自动装箱,可能会创建另一个对象,取决于JVM实现和值是否在缓存范围内
if (c == d) {
// 这个条件可能不成立,因为c和d可能是不同的对象实例
// 即使它们的数值相等,除非这个值在-128到127之间,这时会由于缓存而返回true
}
3、当一个操作数是基本类型long
,另一个是包装类型Long
时
在这种情况下,Java会自动拆箱(unboxing),将Long
类型转换为基本类型long
,然后使用==
比较它们的数值。
long e = 900000001L;
Long f = 900000001L;
if (e == f) {
// 这个条件会成立,因为f会被自动拆箱为long类型,然后比较数值
}
在技术的星河中遨游,我们互为引路星辰,共同追逐成长的光芒。愿本文的洞见能触动您的思绪,若有所共鸣,请以点赞之手,轻抚赞同的弦。
原文地址: https://www.emanjusaka.top/2024/08/java-long-compare
微信公众号:emanjusaka的编程栈