基本类型:byte,int,short,long,boolean,char,float,double等。
包装类型:Byte,Integer,Short,Long,Boolean,Character,Float,Double等。
JDK1.5新特点:自动包装/拆包(Autoboxing/unboxing)
基本类型数据及其包装类地的使用极大地方便了自动包装/拆包。 自动包装:基本类型自动转为包装类型.(int >> Integer) 自动拆包:包装类自动转化为基本类型.(Integer >> int)
另外,他们也有区别:
public class Primitivetype2WrapperType {/** * @param args */public static void main(String[] args) {int n = 1;byte b = 1;System.out.println(n == b);System.out.println(new Integer(n).equals(new Byte(b)));}}
输出:
truefalse
为什么第一个是true,第二个是false?看代码。
Integer
public boolean equals(Object obj) {if (obj instanceof Integer) { return value == ((Integer)obj).intValue();}return false;}
Byte
public boolean equals(Object obj) {if (obj instanceof Byte) { return value == ((Byte)obj).byteValue();}return false;}
因此,只要不是同一类型,就返回false。
其它包装类型也是如此:
public boolean equals(Object obj) {if (obj instanceof Boolean) { return value == ((Boolean)obj).booleanValue();} return false;}
public boolean equals(Object obj) { if (obj instanceof Character) { return value == ((Character)obj).charValue(); } return false;}
public boolean equals(Object obj) {return (obj instanceof Double) && (doubleToLongBits(((Double)obj).value) == doubleToLongBits(value));}
public boolean equals(Object obj) {return (obj instanceof Float) && (floatToIntBits(((Float)obj).value) == floatToIntBits(value));}
public boolean equals(Object obj) {if (obj instanceof Integer) { return value == ((Integer)obj).intValue();}return false;}
public boolean equals(Object obj) {if (obj instanceof Long) { return value == ((Long)obj).longValue();}return false;}
public boolean equals(Object obj) {if (obj instanceof Short) { return value == ((Short)obj).shortValue();}return false;}