表达式类型的自动提升

 当算术表达式包含多个基本数据类型时,整个算术表达式的数据类型会在数据运算时出现类型的自动提升

  • 所有的 byte short char 会自动提升为int类型。



Double  d1 = 123+ 1.1F + 99L + 3.14 ;

 

  123 是  整数(int

  1.1F 浮点型(float);

    9.9L    长整形(long);

   3.14 浮点型(double

 

从左到右运算:

  1.        123 +  1.1F =  124.1F

     Int +float = float

   2.         124.1F + 99L =  223.1F

        float + long = float

  1. 223.1F + 3.14 =   226.24

   float +double = double ;       

 

最终的结果是 226.24  double类型的。所以整个表达式的结果和类型是: 226.24 和 double







样例一:

public class Hello

{

publicstatic void main(String[] args)

{

System.out.println('A'+1);  //结果为:66

//因为char类型 直接被转换为 int 类型。

}

}   


样例二:

1.

public class Hello

{

publicstatic void main(String[] args)

{

bytenum = 15 ;

//输出完成 (耗时 0 ) - 正常终止

}

}

 

2.

public class Hello

{

publicstatic void main(String[] args)

{

byte num = 15 ; // 因为numbytebyte的取值范围包括15,所以编译时编译器在最底层偷偷的进行了转换。

num = num + 3 ; //Hello.java:6: 错误:可能损失精度

// 因为 num byte类型  3int类型  intbyte大,所以需要强制转换。

//因为这不属于编译了,而是属于运行阶段: num + 3 = 18 18也在byte的取值范围内,因为属于运行阶段所以会被报错。 然而上面的15不被报错的原因是因为当时处于编译阶段,所以不会被报错。

//num+3要运行起来才能得出结果18

}

}




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值