常用基础类
8大基本类型
每个基本类型都有对应的封箱和拆箱方法,都有一个静态方法包装类.valueOf(),也有一个实例方法 xxxValue()
例如 Integer a = 100; int b = a ;编译后 Integer a = Integer.valueOf(100); int b = a.intValue();
共同点重新了object如下方法
equals();hashCode();toString();
object默认比较的是地址,他跟 == 一样,,但是不符合逻辑,所以包装类都重写了equal方法
Long
public boolean equals(Objec obj){
if(obj instanceof long){
return value == ((Long)obj).longValue();
}
return false;
}
float
public boolean equals(Objec obj){
return (obj instanceof float && (floatToIntBits((float)obj).value) == floatToIntBits(value));
}
flaotToIntBits讲float的二进制看着int ,只有2个float二进制表示完全相同才会相等, doble也有静态方法doublToLongBits()
hashCode与equal密切相关,一般equal相等,他的hashCode也必须相等、
byte short Integer character 就是直接return (int)value
boolean则是直接返回1231(true)或者1237(false)这2个数
long返回(int)(value^(value>>32)) 高32位于低32位进行逻辑异或
float 讲float看做二进制的int floatToIntBits(vlaue) double 的二进制看做long 然后再高32位于低32位 Long bit = DoubleToLongBits(value)
Comparable
包装类实现接口,false小于true
包装类和string
除了character外都有valueOf(“”)返回包装对象,也有parseXXX(“”)返回基本对象
Number是一个抽象类,是6中数值类型的父类XXX XXXValue();
包装类不可变,一但定义不可修改,不能被继承,