java包装类
1.valueof和强转的区别?
case1: 需要强调的是string.valueof()方法,当参数为类型是object,且值时null的时候他的处理方式
public static string valueof(object obj) {
return (obj == null) ? "null" : obj.tostring();
// 如果object为null会得到字符串’null’,程序不报错但逻辑出错,所以这时要使用强转
}
case2: 基本包装类型(long,integer等)的valueof(object)的处理和string不一样,object是null就返回null而不是’null’
总结:遇到object转string 尽量强转
遇到object转基本包装类型时,最好强转.如果需要可以使用instanceof判断是否属于改类型.
2.包装类型的拆装箱
装箱:基本类型转换成包装类型.拆箱:包装类型转换成基本类型
在装箱的时候自动调用的是integer的valueof(int)方法。而在拆箱的时候自动调用的是integer的intvalue方法,其他的包装类类似
3.包装类型的==判断
1.首先创建将包装类型时会调用valueof()方法.
例如 integer i = 100; 等价于integer.valueof(i);
★要知到integer包装类中有一个integercache静态类,虚拟机加载这个integer对象就会将[-128,127]的值存储在integer cache[]中
2,valueof方法先判断int值是否在integercache缓存中,如果在则返回缓存池的数据,如果不在则返回integer对象
所以 integer x = 200; integer y = 200; y == x 为false;
特殊情况
1.int x = 100; integer y = 100 ; x == y 为true
原因 == 只能用在数值类型判断或者对象类型判断
数值判断,判断值是否相等.对象判断,判断地址是否一致.
如果是一个数值,一个数值包装类型,则会对包装类进行拆箱,在进行值判断.
2.如果包装类型进行equals进行比较时,他会先进行类型判断,如果类型不一致直接返回false,不会继续内容判断
integer x = 100; short s = 100; x.equlas(s); 值为false
资料来源于网络,如有侵权联系删除(^^ゞ!