自动提升


当需要时Java的数据类型可以自动提升为比它“大”的类型,对原始类新来说,byte首先自动提升为int,然后是long、float或double。byt、short提升顺序为short、int、long、float、double。对于对象来说,会自动提升为父类的类型。


整型运算的结果Java默认为int型,浮点型运算的结果Java默认为double型,因此在运算时可能会出现从范围大的类型直接赋值给小的类型,从而导致编译器错误:possible loss of precision。

如下代码:

public class Promotion {
    public static void main(String[] args) {
        char c1 = 'a';
        char c2 = 'b';
        char c3;
        c3 = c1 + c2;  //compiler error,c1+c2以自动提升为int型                       
    }
}

编译时出现错误:



如下代码:

public class Promotion2 {
    public static void main(String[] args) {
        short s = 100;
    //  s = s >>> 2;  //compier error, possible loss of precision                    
        s >>>= 2;     //OK
    }
}

>>> 与 >> 的区别为>>>右移时高位总是补0。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值