封箱及拆箱

封箱及拆箱

字节(byte),位(bit),1 byte = 8 bit。

基本数据类型

基本数据类型位数取值范围(包装类型中有明确)默认值包装类型
byte(字节型)8-128~1270Byte
short(短整型)16-32768~327670Short
int(整型)320x80000000 ~ 0x7fffffff0Integer
long(长整型)640x8000000000000000L ~ 0x7fffffffffffffffL0LLong
float(单精度浮点型)320x1.0p-126f ~ 0x1.fffffeP+127f0.0fFloat
double(双精度浮点型)640x1.0p-1022 ~ 0x1.fffffffffffffP+10230.0dDouble
char(字符型)16‘\u0000’ ~ ‘\uFFFF’‘\u0000’Character
boolean(布尔型)1true/falsefalseBoolean

只有基本数据类型在作为成员变量时才有默认值,其他情况(如:作为局部变量)会提示变量未初始化。

包装类型

包装类即使把基本类型变成对象类型,包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

类型转换

  1. byte、Byte互转

    byte转Byte : Byte a = new Byte((byte) 0) Byte b = Byte.valueOf((byte) 0)

    Byte转byte : byte c = b.byteValue()

  2. short、Short互转

    short转Short : Short a = new Short((short) 0) Short b = Short.valueOf((short) 0)

    Short转short : short c = b.shortValue()

  3. int、Integer互转

    int转Integer : Integer a = new Integer(0) Integer b = Integer.valueOf(0)

    Integer转int : int c = b.intValue()

  4. long、Long互转

    long转Long : Long a = new Long(0L) Long b = Long.valueOf(0L)

    Long转long : long c = b.longValue()

  5. float、Float互转

    float转Float : Float a = new Float(0f) Float b = Float.valueOf(0f)

    Float转float : float c = b.floatValue()

  6. double、Double互转

    double转Double : Double a = new Double(0d) Double b = Double.valueOf(0d)

    Double转double : double c = b.doubleValue()

  7. char、Character互转

    char转Character : Character a = new Character('\u0000') Character b = Character.valueOf('\u0000')

    Character 转char : char c = b.charValue()

  8. boolean、Boolean互转

    boolean转Boolean : Boolean a = new Boolean(false) Boolean b = Boolean.valueOf(false)

    Boolean转boolean : boolean c = b.booleanValue()

自动封箱及自动拆箱

基本类型转包装类型称为封箱;包装类型转基本类型称为拆箱。

而自动封箱及自动拆箱则是指封箱及拆箱的动作不是由我们显示完成,程序会为我们进行,以int和Integer为例,其他类型情况类似。

//自动装箱,通过反编译可以看到调用的是valueOf方法,相当于Integer i = Integer.valueOf(10)
Integer i = 10;
//自动拆箱,通过反编译可以看到调用的是intValue方法,相当于int a = Integer.intValue(i)
int a = i;

自动装箱调用的是valueOf方法,而不是调用构造方法创建对象,可能是因为valueOf方法有cache(除了单精度浮点型、双精度浮点型,两者在一定范围内,数组个数无限,无法事先创建用数组存放;布尔型也没有cache,因为就只有两种取值),只要是cache范围内的就不需要额外创建对象。

何时自动封箱及自动拆箱

参考地址

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值