Java笔记之自动装/拆箱以及类型转换

1.基础概念
Java中所有的基本类型都有其对应的包装类
基础类型:
boolean char byte int float double long
包装类
Boolean Character Byte Integer Float Double Long Short Void

所谓的装箱就是一个包装类对象接收了一个基础类型对象,这时候就会发生装箱
,将基础类型对象转化成包装类对象,下面使用例子说明

    public static void main(String[] args) {
        Integer ii = 5;
        ii++;
    }

在Integer ii = 5; 这行设置断点。

这里写图片描述

由图片可知, Integer ii = Integer.valueOf(5);

继续向下debug 当运行 ii++时由于++运算符只能对基本数据进行操作
所以ii先会拆箱为int类型再装箱为integer类型

拆箱

这里写图片描述

运算完成后会装箱成integer类型

陷阱
包装类 Character Integer Float Double Long
在进行==比较时的陷阱

public static void main(String[] args) {
        Integer i1 = 15;
        Integer i2 = 15;
        Integer i3 = 1000;
        Integer i4 = 1000;
        System.out.println(i1 == i2);
        System.out.println(i3 == i4);
        Character c1 = 15;
        Character c2 = 15;
        Character c3 = 300;
        Character c4 = 300;
        System.out.println(c1 == c2);
        System.out.println(c3 == c4);
        Float f1 = (float) 15;
        Float f2 = (float) 15;
        Float f3 = (float) 1500;
        Float f4 = (float) 1500;
        System.out.println(f1 == f2);
        System.out.println(f3 == f4);
        Long l1 = (long) 15;
        Long l2 = (long) 15;
        Long l3 = (long) 1500;
        Long l4 = (long) 1500;
        System.out.println(l1 == l2);
        System.out.println(l3 == l4);
        Double d1 = 15.1;
        Double d2 = 15.1;
        Double d3 = 1500.1;
        Double d4 = 1500.1;
        System.out.println(d1 == d2);
        System.out.println(d3 == d4);
    }
结果
true
false
true
false
false
false
true
false
false
false

这里写图片描述

包装类 Character Integer Long 都具有缓冲池 如果其大小[-128-127]之间直接返回缓存池中的对象 所以比较结果为true 超出范围 就好new一个新对象 那么两个的引用就不同了所以为false

包装类 Float Double 无缓冲池 所以无论大小如何结果都为false

类型装换

两个操作数进行二元操作时,要先转为同一类型再计算
- 两个数中有一个为double 则另一个数为double类型
- 否则 其中有一个数为float类型 另一个操作数为float类型
- 否则 如果有一个为long类型 另一个操作数为long类型
- 否则两个都为int类型

小数类型默认为double类型

Float f3 = (float) 1500;
Long l1 = (long) 15;

所以需要强转

数值进行二元计算最小为int类型所以要进行强制转换

    byte i1 = 1;
        byte i2 = 2;
        i1 = (byte) (i1 + i2);
        i1 += i2;   
        char a = 1;
        char b = 1;
        a = (char) (a + b);
        a += b;
        a++;
        short s = 1;
        short s1 = 1;
        s = (short) (s + s1);

到此类型转换以及拆装箱至此差不多结束了
水平有限 若有错误 欢迎指正
参考书籍《Java核心技术》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值