关于 Integer 值比较的问题

今天刚好遇到这样的问题,别的不说,先上代码

public class TestInteger {

    public static void main(final String[] args) {
        final Integer a = 500;
        final Integer b = 500;
        final Integer c = 100;
        final Integer d = 100;
        System.out.println("a=b   :" + (a == b));
        System.out.println("c=d   :" + (c == d));
    }

}

大家看一下这一段代码,是不是很简单呢。大家心里也有答案了吧?好的,看一下我们运行之后的答案

a=b :false
c=d :true

是不是有点意外,这是为什么呢?来简单说一下这个

  • java中Integer类型对于-128-127之间的数是缓冲区取的,所以用等号比较是一致的。
  • 但对于不在这区间的数字是在堆中new出来的对象。所以地址空间不一样,也就不相等。

所以以后如果我们碰到这种需要怎么去比较两个integer里面的值呢。

Integer b3=60,这是一个装箱过程也就是Integer b3=Integer.valueOf(60)。以后碰到Integer比较值是否相等需要用intValue()。 这样才是比较两个值。如果没用就相当于两个对象的存储地址比较。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏landv

java修饰符

1663
来自专栏一枝花算不算浪漫

[Java面试二]Java基础知识精华部分.

4059
来自专栏用户2442861的专栏

Java内存管理(一、内存分配)

关于Java内存分配,很多问题都模模糊糊,不能全面贯通理解。今查阅资料,欲求深入挖掘,彻底理清java内存分配脉络,只因水平有限,没达到预期效果,仅以此文对所...

7652
来自专栏MelonTeam专栏

聊聊kotlin中的run, let, with, apply, also ...

导语 kotlin 标准库中, run, let, with, apply, also 实现解读 在看kotlin代码时, 可能会看到let, r...

2587
来自专栏liulun

Nim教程【十三】

类型转换 Nim支持显示类型转换和隐式类型转换 使用casts操作符完成显示类型转换工作, 显示类型转换工作是编译期完成的工作,是位模式的 隐式类型转换也是编译...

2226
来自专栏编程

JS正则表达式常用函数汇总

写代码时,尤其是为表单添加验证时,经常会用到正则表达式,这时候,一堆相关的函数就浮现出来了,由于比较类似,所以经常不能快速选择最合适的函数,对于懒癌前端,更得马...

1999
来自专栏C语言及其他语言

[蓝桥杯]字符逆序

题目描述 将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。 输入 输入包括一行。 第一行输入的字符串。 输出 输出转换好的逆序字符串。...

3525
来自专栏思考的代码世界

Python基础学习05天

1485
来自专栏前端儿

大小写互换

  现在给出了一个只包含大小写字母的字符串,不含空格和换行,要求把其中的大写换成小写,小写换成大写,然后输出互换后的字符串。

1322
来自专栏余生开发

EditorConfig 的配置

# EditorConfig文件使用INI格式。斜杠(/)作为路径分隔符,#或者;作为注释。路径支持通配符:

1994

扫码关注云+社区

领取腾讯云代金券