Integer
是int
的包装类,默认值是null
- 由于
Integer
变量实际上是对一个Integer
对象的引用,所以通过new生成的Integer变量和另一个Integer变量永远是不相等的(因为new生成的是新对象,其内存地址不同)。
Integer i = new Integer(100);//Java9后,用Integer i = Integer.valueOf(100)代替
Integer j = new Integer(100);
Integer k = 100;
System.out.println(i == j); //false
System.out.println(i == k); //false
Integer
变量和int
变量比较时,只要两个变量的值是向等的,则结果为true(因为包装类Integer
和基本数据类型int
比较时,java会自动拆包装为int
,然后进行比较,实际上就变为两个int变量的比较)
Integer a = Integer.valueOf(128);
int b = 128;
System.out.println(a == b);//true
- 对于两个非
new
生成的Integer
对象,进行比较时,如果两个变量的值在区间-128
到127
之间,则比较结果为true
,如果两个变量的值不在此区间,则比较结果为false
Integer c = Integer.valueOf(128);
Integer d = Integer.valueOf(128);
System.out.println(c == d); //false
Integer e = -128;
Integer f = -128;
System.out.println(e == f); //true