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

廖雪峰Java2面向对象编程-6Java核心类-3包装类型

时间:2019-01-20 13:54:18      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:number   wrap   注意   cte   pat   基本类型   out   center   变量   

Java的数据类型:

  • 基本类型:int boolean float
  • 引用类型:所有class类型
    技术分享图片
    为一个基本类型int赋值为null,会提示“incompatible types”错误。
    错误原始:基本类型是不能视为对象(引用类型)的.。
    可以定义一个Integer类,包含一个实例字段int。这样可以把Integer视为int的包装类型wrapper。
    包装类型本身是引用类型,只是其内部持有一个基本类型的变量。

    JDK为每种基本类型都创建了对应的包装类型:
基本类型 对应的引用类型
boolean Boolean
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character

使用JDK的Integer类传入null,语句不会再报错,只是执行时会抛出java.lang.NumberFormatException

        Integer n = new Integer(null);
        int i = n;
        System.out.println(i);

技术分享图片

类型转换

        int i = 100;
        //把int、String转换为Integer
        Integer n1 = new Integer(i);
        Integer n2 = Integer.valueOf(i);
        Integer n3 = Integer.valueOf("100");
        //把Integer、String转换为int类型
        int x1 = n1.intValue();
        int x3 = Integer.parseInt("100");
        //把Integer、int转换为String类型
        String s1 = n1.toString();
        String s2 = String.valueOf(i);

自动拆箱和自动装箱

编译器何以自动在int和Integer之间转型。

  • 自动装箱auto boxing int -> Integer
        Integer n = 99;//自动调用Integer.valueOf(99)
  • 自动拆箱auto unboxing Integer -> int
    ```#java
    int i = n;//n.intValue()
  • 自动装箱和自动拆箱只发生在编译阶段
  • 装箱和拆箱会影响执行效率
  • 编译后的class代码是严格区分基本类型和引用类型的,没有自动装箱和拆箱
    Integer->int执行时kennel会报错
    包装类型定义了一些常量

总结:
JDK的包装类型可以把基本类型包装为class
自动装箱和自动拆箱是编译器完成的 (JDK>= 1.5)
装箱和拆箱会影响执行效率
注意拆箱时kennel发生NullPointException

廖雪峰Java2面向对象编程-6Java核心类-3包装类型

标签:number   wrap   注意   cte   pat   基本类型   out   center   变量   

原文地址:https://www.cnblogs.com/csj2018/p/10294178.html

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