zoukankan      html  css  js  c++  java
  • Integer使用==做判断遇到的问题

    问题:

    最近使用Integer类型的数据做判断时,遇到了一个神奇的问题。

    如:

    Integer a=223;

    Integer b=223;

    这样使用==做判断,得到的结果是 false

    原因:

    后来查找了一下,发现Integer类型的数据,范围在-128-127时是放在常量池的,意思也就是如果在范围内,会直接从常量池中取值,这时使用==判断是没问题的,但是如果不在常量池范围内使用Integer是就会重新new Integer(),所以这个时候使用==得到的结果就是false了。

     debug看一下各个变量的内存地址:

     控制台输出结果:

    这里顺便说一下==和equals的区别

    说简单点就是: ==比较的是内存地址,而equals比较的是值是否相等。

    上面的测试案例把==换成equals:

     控制台输出:

  • 相关阅读:
    机器学习数据
    偏差和方差
    numpy基础
    卷积神经网路
    深度学习基础
    Iris数据集
    SVM-SVR
    Java之日期处理
    MySQL笔记
    在Eclipse中运行的时候出现launching/Building
  • 原文地址:https://www.cnblogs.com/wlv1314/p/12172316.html
Copyright © 2011-2022 走看看