Integer类型的比较

这篇具有很好参考价值的文章主要介绍了Integer类型的比较。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java篇

疑问:

为什么在以下代码中,一个结果为true,而另一个则为false?

Integer int1 = 127;
Integer int2 = 127;
System.out.println(int1 == int2); //true

Integer int3 = 128;
Integer int4 = 128;
System.out.println(int3 == int4); //false

解答:

  • 因为 Java 默认会比较数据在 JVM 堆中的地址,而 JVM 会将 Integer 转成 int 来进行比较,恰巧在 Integer 类中提供了内部静态类 IntegerCache 用来自动拆箱和装箱,数值范围为-128 ~ 127
  • 所以当比较的值在此区域时,Java 不会创建新对象,两者相等。
  • 当比较的值不在此区域内时,Java 会分别创建新的对象,所以两者不相等。

结论

我们应尽力使用.equals()去比较“对象型数据”,避免使用==时出现上述错误。文章来源地址https://www.toymoban.com/news/detail-826296.html

到了这里,关于Integer类型的比较的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于Redis-存Long取Integer类型转换错误的问题

    背景 最近遇到了两个Redis相关的问题,趁着清明假期,梳理整理。 1.存入Long类型对象,在代码中使用Long类型接收,结果报类型转换错误。 2.String对象的反序列化问题,直接在Redis服务器上新增一个key-value,而后在代码中get(key)时,报反序列化失败。 关于Long类型转换错误 Red

    2024年02月15日
    浏览(31)
  • Java中Integer方法

    本专栏是自己学Java的旅途,纯手敲的代码,自己跟着黑马课程学习的,并加入一些自己的理解,对代码和笔记 进行适当修改。希望能对大家能有所帮助,同时也是请大家对我进行监督,对我写的代码进行建议,互相学习。 Integer类提供了许多方法来操作整数值。 定义 分析

    2024年02月14日
    浏览(47)
  • Java --- Integer.parseInt()

    parseInt() 方法是java.lang 包下Integer 类的一个方法。 Java Integer parseInt() 方法共有三种不同类型,可以根据其参数进行区分。 以下是 parseInt() 方法的声明: 数据类型 参数 描述 必需/可选 String s 它是一个需要转换为等效整数的字符串。 Required int radix 解析字符串时使用的基数 Re

    2024年02月16日
    浏览(36)
  • java Long 转Integer

    要将 Java 中的 Long 类型转换为 Integer 类型,您可以使用 Integer 类中提供的 intValue() 方法。 例如,假设您有一个 Long 类型的变量 longValue,您可以使用以下代码将其转换为 Integer 类型: 请注意,如果 Long 类型的变量 longValue 超出了 Integer 类型的范围,即超过了 -2147483648 到 21474

    2024年02月11日
    浏览(38)
  • 在Java中将Double转换为Integer

    首先,初始化一个double值 现在,使用intValue()方法将Double转换为Integer值 以下是在Java中将Double转换为Integer的程序 输出结果

    2024年02月08日
    浏览(44)
  • Java转换为十进制——Integer.parseInt的使用

    一、什么是Integer.parseInt Integer.parseInt(String)就是将String字符类型数据转换为Integer整型数据,如果遇到不能转换的字符则会抛出异常! 简而言之,这个代码就是用来把任何进制的数据转化成10进制的数据。 二、使用方法 格式为:Integer.parselnt(\\\"String\\\",目前的进制) (1)以Java九进

    2024年02月14日
    浏览(43)
  • Java中判断Integer是否为null的详细解析

    简介 在java编写过程中,我们会使用到各种各样的表达式,在使用表达式的过程中,有哪些安全问题需要我们注意的呢?一起来看看吧。 来看看小编挑选的这本书对你是否有用: 注意表达式的返回值 我们在使用JDK库的时候,一定要注意认真的读一下JDK中方法的含义和它的返

    2024年02月13日
    浏览(38)
  • int和Integer的区别,Java为什么要设计包装类呢?

    1.默认值不同 作为成员变量来说,int的初始默认值为 0 ,而Integer为 null 。 2.存储的内存位置不同 Integer是一个类,其对象存储在 堆 内,int是基本数据类型,存放在 栈 中。 3.作用不同 Integer类里面封装了很多的属性以及方法,使用起来会更加的 灵活 。 Java为什么要设计基本类

    2024年02月13日
    浏览(50)
  • 在使用TreeMap时遇到Cannot invoke “java.lang.Integer.intValue()“

    问题代码: 执行代码会抛出 java.lang.NullPointerException: Cannot invoke \\\"java.lang.Integer.intValue()\\\" because the return value of \\\"java.util.TreeMap.floorKey(Object)\\\" is null ,这是因为map.floorKey在无返回值时会返回null,而int无法接null。另外, intValue() 这个是因为,Java发现外面是int接,会自动拆箱将Inte

    2024年02月12日
    浏览(47)
  • java.lang.String cannot be cast to java.lang.Integer异常

    在java中无法直接将String类型强制转换为Integer类型。 Java中的String和Integer是两种不同的数据类型,它们之间不能直接进行强制类型转换。这主要是因为它们在底层的表示方式和数据结构上有很大的差别。 String是一个不可变的字符序列,用于表示文本数据。它是通过字符数组来

    2024年02月05日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包