java 基本类型和包装类型

基本类型: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)));
	}

}

输出:

true
false

为什么第一个是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;
}



你可能感兴趣的:(java 基本类型和包装类型)