Java基本数据(short和int的转换问题)

本文深入解析Java中short和int类型转换的五种常见场景,包括复合赋值、直接赋值及运算后的类型转换规则,帮助理解Java的自动类型提升与强制类型转换机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面试遇到short和int的转换问题,当时有些疑惑,在这里总结一下!

第一种情况

public static void main(String[] args) {
        short a = 1;
        a += 1;                 //不用强转
        a = (short) (a + 1);   //需要强转, 
    }

       可能大家会比较迷惑,为什么两种操作都是+1,但一个需要强转一个不需要?

a += 1 :因为在Java规范中,复合赋值是自带了隐式的强制类型转换的。
a = a+1 : 因为先执行的是a+1,会先将a强转为int,之后将int赋值给short就会出现编译错误

第二种情况

public static void main(String[] args) {
        int a = 1;
        int b = 2;
        short c = (short) (a+b);  //int直接赋值给short时需要强转操作
    }

第三种情况

public static void main(String[] args) {
        short a = 1;
        short b = 2;
        short c = (short) (a + b);   //两个short做运算后再进行赋值的话,也需要强转;
    }

因为在做运算操作时,编译器会自动将比int精度小的类型转换为int进行操作,所以运算之后是int类型,需要强转;

第四种情况

public static void main(String[] args) {
        short a = 1;
        short b = 2;
        int c = a + b;    //两个short做运算操作会转成int类型来操作,所以这里的short不需要强转;
    }

第五种情况

public static void main(String[] args) {
        short a3 = 1;
        int c3 = a3;   //short可以直接赋值给int类型,不用强转
    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值