Java中int与Integer的区别

转自https://www.cnblogs.com/guodongdidi/p/6953217.html

import java.lang.Integer;

public class intDemo{
    public static void main(String[] args){
        
        boolean eq = (int.class == Integer.class);
        System.out.println(String.format("int.class与Integer.class相等?%b",eq));
        
        //因为new生成的是两个对象,其内存地址不同,
        //所以两个通过new生成的Integer变量永远是不相等的。
        Integer i_new_100 = new Integer(100);
        Integer j_new_100 = new Integer(100);
        System.out.println(String.format("值相同的两个new生成的Integer相等?%b",i_new_100 == j_new_100));
        
        //Integer和基本数据类型int比较时,java会自动拆包装为int,
        //然后进行比较,实际上就变为两个int变量的比较。
        Integer i_integer = new Integer(100);
        int j_int = 100;
        System.out.println(String.format("值相同的int与Integer对象相等?%b",i_integer == j_int));
        
        //两个非new生成的Integer对象进行比较,
        //如果两个变量的值在区间-128 ~ 127之间,
        //则比较结果为true
        //否则比较结果为false
        Integer i_100 = 100;
        Integer j_100 = 100;
        System.out.println(String.format("两个值为100的非new生成Integer对象相等?%b",i_100 == j_100));
        Integer i_128 = 128;
        Integer j_128 = 128;
        System.out.println(String.format("两个值为100的非new生成Integer对象相等?%b",i_128 == j_128));
        
    }
}
原文地址:https://www.cnblogs.com/qdhotel/p/9492054.html