Java教程

Java中Integer比较问题

本文主要是介绍Java中Integer比较问题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

结论:使用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中Integer比较问题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!