在Java中使用Primitive Wrapper类

Jav*_*ner 0 java

将Integer声明为两种方式之间有什么区别吗?

Integer Age = 25;
Integer Age = new Integer(25); 
Run Code Online (Sandbox Code Playgroud)

Dee*_*ala 8

第一个整数来自整数池,==检查将返回true

        Integer age = 25;
        Integer a = 25;
        System.out.println(a == age);
Run Code Online (Sandbox Code Playgroud)

第二个每次创建新对象,==检查将返回false.

        Integer age = new Integer(25);
        Integer a = new Integer(25);
        System.out.println(a == age);
Run Code Online (Sandbox Code Playgroud)

我必须补充一点,默认情况下只缓存通过-128 - > 127的整数,所以下面的代码片段也会返回false.您可以通过将属性设置为java.lang.Integer.IntegerCache.high高于127的值来调整此值,它将返回true.

        Integer age = 129;
        Integer a = 129;
        System.out.println(a == age);
Run Code Online (Sandbox Code Playgroud)