javaSE-day03.9-包装类

  • 包装类:java定义了8个包装类,目的是为了解决基本类型不能直接参与面向对象开发的问题,使得基本类型可以通过包装类的实例以对象的形式存在。其中数字类型的包装类都继承自java.lang.Number而char和 boolean的包装类直接继承自Object,Number是一个抽象类,定义了一些方法,目的是让包装类可以将其表示的基本类型转换为其他数字类型。
  • 基本类型转换为包装类。java推荐我们使用包装类的静态方法valueOf将其基本类型转换为包装类,而不是直接new
    int i =123; 
    Integer i1 = Integer.valueOf(i);    valueOf方法 底层就是 return new Integer(i)
    Integer i2 = Integer.valueOf(i);
    
    //Integer会重用-128~127之间的整数,如果超范围了就会new创建一个Integer实例
    //所以-128~127 之间的整数 == 和 equals都是true ,地址都是一样的
    //而超了这个范围就没有缓存值了,地址就不一样了
    //可以理解为有一个常量池,超过了这个范围就就new,在这个范围就直接给地址
    System.out.println(i1 == i2);             //true
    System.out.println(i1.equals(i2));        //true

    double dou = 123.123;
    Double d1 = Double.valueOf(dou);          //Double则是直接new,没有常量池了
    Double d2 = Double.valueOf(dou);
    System.out.println(d1 == d2);             //false,地址不一样
    System.out.println(d1.equals(d2));        //true,内容一样

    //包装类转换为基本类型
    int in = i1.intValue();                   //获取包装类对象中表示的基本类型
    double doub = i1.doubleValue();
    System.out.println(in);                   //123
    System.out.println(doub);                 //123.0

    in = d1.intValue();
    doub = d1.doubleValue();
    System.out.println(in);                   //123
    System.out.println(doub);                 //123.123
  • 包装类常用功能:
    • 可以通过包装类来获取获取其表示的基本类型的取值范围,获取int的最大最小值
    • 字符串转基本类型
 public static void main(String[] args) {
     int imax = Integer.MAX_VALUE;
     System.out.println(imax);
     int imin = Integer.MIN_VALUE;
     System.out.println(imin);

     /**
      * 字符串转基本类型:  
      * 字符串转换为基本类型的前提是该字符串正确描述了基本类型可以保存的值,否则
      * 会抛出异常NumberFormatException: 数字格式异常
      */
     String str = "123";
     //String str = "123.123";  这个字符串不能解析为int值,包括 "a"也不能解析为97
     int d = Integer.parseInt(str);            //字符串转int
     System.out.println(d);                    //123
     double dou = Double.parseDouble(str);     //字符串转double
     System.out.println(dou);                  //123.0
  }
  • 自动拆装箱: JDK1.5后推出的新特性,该特性是编译器认可的,当编译器编译源代码的时候,发现有基本类型和引用类型相互赋值时,会自动补充代码来完成他们的转换工作,这个过程称为:自动拆装箱
public static void main(String[] args) {
     /**
      * jdk1.5开始  java 可以自动拆包箱  编译器会自动补代码,JVM不会支持
      * 触发自动拆箱特性,编译器会补充代码将包装类转换为基本类型,
      * int i = new Integer(123).intValue()
      */
     int i = new Integer(123);

     /**
      * 编译器触发装箱特性,
      * Integer in = Integer.valueOf(123);
      */
     Integer in = 213;
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值