Java中int与Integer的区别

时间:2023-03-09 17:39:39
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)); }
}