ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java中Integer比较问题

2021-07-04 13:03:03  阅读:139  来源: 互联网

标签:缓存 Java System 128 println Integer 比较 out


结论:使用equals判断

public class Test {


    public static void main(String[] args) {
        Integer a=new Integer(1);
        Integer b=new Integer(1);
        System.out.print("缓存范围内,两个对象引用,直接使用==判断:");
        System.out.println(a==b);System.out.println("--------------");
        System.out.print("缓存范围内,两个对象引用,使用equals判断:");
        System.out.println(a.equals(b)); System.out.println("--------------");
        Integer c=1;
        Integer d=1;
        System.out.print("在默认缓存范围-127-128内直接使用==判断:");
        System.out.println(c==d);System.out.println("--------------");
        Integer e=128;
        Integer f=128;
        System.out.print("超出缓存,128直接使用==判断:");
        System.out.println(e==f);System.out.println("--------------");
        System.out.println("超出缓存,128使用equals判断:"+e.equals(f));
    }
}

结果:
在这里插入图片描述
原因:Integer类对于在[-128, 127]内的值做了缓存。在我们使用第二第三种方式赋值时,会调用Integer中的valueOf(int i)这个方法,该方法会判断该值是否在缓存区间内,如果不在区间内才会使用new关键字去实例化一个新的对象。

标签:缓存,Java,System,128,println,Integer,比较,out
来源: https://blog.csdn.net/qq_44073614/article/details/118461053

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有