【Java】类型转换 —— 自动转换、强制转换与表达式类型自动提升

1.自动类型转换

Java中的自动类型转换就好比将小瓶水倒入到大瓶的换装过程。我们将小瓶水倒入到大瓶中时,由于小瓶的容量比大瓶的容量小,所以倒入的水永远不可能溢出大瓶。同样,在Java中,将取值范围小的数据类型的变量值赋值给取值范围大的数据类型的变量时,程序也不会出现任何问题。

2.强制类型转换

    public class Example02 {
        public static void main(String[] args) {
            byte a;                // 定义byte类型的变量a
            int b = 298;          // 定义int类型的变量b,其表现形式是十六进制
            a = (byte) b;
            System.out.println("b=" + b);
            System.out.println("a=" + a);
        }
    }

 

出现这种现象的原因是,变量b为int类型,在内存中占用4个字节,而byte类型的数据在内存中占用1个字节,当将变量b的类型强转为byte类型后,前面3个高位字节的数据已经丢失,这样数值就发生了改变。int类型转byte类型的过程如图5所示。

多学一招:表达式类型自动提升

byte、short和char类型的变量在运算期间类型会自动提升为int,然后再进行运算。程序编译报错,此时就需要进行强制类型转换。

    public class Example03 {
        public static void main(String[] args) {
            byte b =3;
            short s =4;
            char c =5;  
            //将byte、short、char类型数值相加,再赋值给byte类型
            byte b2 = b+s+c;  
             System.out.println("b2=" + b2);
        }
    }

 要解决文件3中的错误,必须要将文件3中第5行的代码修改为:

 byte b2 = (byte) (b+s+c);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值