Integer
类是Java开发中最常用的基础类之一,也是基本数据类型int
对应的包装类。Integer
能使在Java中像类一样使用整型数字,自Java 5引入自动装箱拆箱机制以后,能够混合使用Integer
和int
来表示整型数字,极大的方便了对数字的操作。同样如果使用不当,也有意想不到的结果产生。所以通过之前的学习和开发过程中踩过的坑,本文总结一下Integer
需要注意的一些使用问题和常遇到的相关面试题。
Integer对象 和 int 进行比较
Integer
是类,有两种创建方式:= 赋值和new关键字,int
是基本类型,只能通过 = 赋值。那么Integer
和int
比较,结果如何呢?请看下面的代码例子:
public void intCompareInteger() {
for (int i = -200; i < 200; i++) {
int num = i;
Integer integer = i;
Integer integer2 = new Integer(i);
System.out.println(num == integer);
System.out.println(num == integer2);
}
}
// 执行结果:
true
true
true
...
true
运行结果表示数值相同的Integer对象和int变量是相等的,而不会使用对象的比较方法,这也是因为自动拆箱的存在,当基本数据类型与其包装类使用关系操作符 == 进行比较时,其包装类对象会自动拆箱进行运算,因此以上代码是转换为了两个int
进行比较。
另外当包装类参与算术操作符运算时,也会被自动转成基本数据类型,请看下面的案例:
public void calIntAndInteger() {
int a = 20;
int b = 38;
Integer c = 18;
Integer c1 = new Integer(18);
System.out.println(b == c + a);
System.out.println(b == c1 + a);
}
/