今天说说Java中八大基本数据类型对应的包装类型
byte java.lang.Byte
short java.lang.Short
int java.lang.Integer
long java.lang.Long
float java,lang.Float
double java.lang.Double
boolean java.lang.Boolean
char java.lang.Character
包装类型就是将基本数据类型包装成引用数据类型。
JDK5.0之前的
将int-->Integer(自动装箱)Integer i1 = new Integer(10);
将Integer-->int(自动拆箱)int i2 = Integer.intValue();
JDK5.0之后的
Integer i1 = 10;(自动装箱)
int i2 = i2;(自动拆箱)
接下来分宜一下这段代码:
Integer i1 = new Integer(10);
Integer i2 = new Integer(10);
//这里不会自动拆箱
System.out.println(i1==i2);
结果:false。因为双等号两边比较的是内存地址,这明显两个内存地址不一样
Integer i1 = new Integer(10);
Integer i2 = new Integer(10);
System.out.println(i1.equals(i2));
结果:true。因为
Integer已经重写了Object中的equals方法
Integer i3 = 128;
Integer i4 = 128;
System.out.println(i3==i4);
结果:false。等同于Integer i1 = new Integer(10);
Integer i5 = 127;//这个程序不会在堆中创建对象,会直接从整形常量池中区去拿
Integer i6 = 127;
System.out.println(i5==i6);//true
Integer i7 = -128;
Integer i8 = -128;
System.out.println(i7==i8); //true
结果:注意一下程序(如果数据在【-128-127】之间的话,Java中引入了一个“整形常量池”,在方法区中)
所以这个明显是错误的
Integer i9 = -129;
Integer i10 = -129;
System.out.println(i9==i10); //false