1.Integer 类和 int 的区别
int 取值范围 -231 ~231 -1
Integer 是 int 包装类类,默认值为null,int是基本数据类型,默认值为0 ,占4个字节;
Integer 是Integer对象的引用,所以两个通过new生成的Integer变量永远是不相等的(因为new生成的是两个对象,其内存地址不同)
Integer 需要实例化使用
2.Integer 的自动拆箱和装箱
装箱就是自动将基本数据类型转换为包装器类型
拆箱就是自动将包装器类型装换为基本数据类型
例
Integer i = 10;
i=i+1;
过程
Integer i = Integer.valueOf(10);
Integer.valueOf(i.intValue() + 1)=11 //自动拆箱,再自动装箱
i=new Integer(11)
// Integer ii = Integer.valueOf(10); //自动装箱
// ii = Integer.valueOf(ii.intValue() + 1); //自动拆箱,再自动装箱
parseInt(String)方法将字符串转换整数
3.Integer 与int 是否相等
第一种情况
Integer i = 10;
Integer j = 10;
Integer m = new Integer(128);
Integer n = new Integer(128);
Integer a = 128;
Integer b = 128;
System.out.println(i == j);
System.out.println(m == n);
System.out.println(a == b);
1.true,false,false
说明Integer可以从缓存中得到数据,valueof()底层,其中low与high取值范围是-128到127,所以相等
注:Integer 实例化不相等,因为他们的存储地址不同
第二种情况
Integer i = 128;
Integer e = 127;
Integer n = new Integer(127);
Integer c = new Integer(128);
int a = 127;
int b = 128;
System.out.println(a == e);
System.out.println(i == b);
System.out.println(c == b);
System.out.println(n == a);
结果
true
true
true
true
Int与Integer的比较不受取值范围的影响,自动拆箱与装箱
Integer.compare和compareTo
两个值作比较
compareTo底层是吊的compare
对象大于目标参数,返回1
对象小于目标参数,返回-1
对象等于目标参数,返回0
if( Integer.compare(30,20) == 1){
System.out.println(1);
}else{
System.out.println(0);
}
结果:1
Integer a = 122;
Integer b = 122;
if(a.compareTo(b) == 0){
System.out.println(1);
}else {
System.out.println(0);
}
结果:1,两值相等