欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

关于Integer初始化的问题

程序员文章站 2022-04-19 18:22:29
...

上代码

public class testInteger {
    public static void main(String[] args) {
//test1
        Integer a = new Integer(100);
        Integer b = new Integer(100);
        System.out.println("a == b?"+(a == b));//true
//test2
        Integer c = 100;
        Integer d = 100;
        System.out.println("c == d? "+(c == d));//true
//test3
        Integer e = 1000;
        Integer f = 1000;
        System.out.println("e == f?"+( e == f));//false
//test4
        Integer g = 1000;
        Integer h = 1000;
        System.out.println("g ==h?"+( g.equals(h)));//true

    }
}

使用Integer包装类的时候,如果Integer的数值在-128~127之间,jvm会对这个数值进行自动缓存,否则将会新建对象。导致test3中的false。test4中使用equals方法能得出true的答案。