码迷,mamicode.com
首页 > 编程语言 > 详细

java包装类

时间:2018-08-19 00:59:39      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:java包   地址   back   equals   equal   col   最好   als   包装类   

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

 

资料来源于网络,如有侵权联系删除(^^ゞ!

java包装类

标签:java包   地址   back   equals   equal   col   最好   als   包装类   

原文地址:https://www.cnblogs.com/x1a765/p/9499207.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!