java语言基础(9)——变量相加和常量相加的区别

来源:互联网 发布:eosinfo软件下载 编辑:程序博客网 时间:2024/05/29 18:35
class TypeConvert{public static void main(String[] args){  byte a = 1;  byte b = 2;  byte c; // c = a+b; // ①  c = 1+2; // ②  System.out.println(c);}}

分析

在①c=a+b这一行中,a和b都是byte类型,在运算的过程中会提升为int类型,结果c应该是int类型,而我们定义的c是byte类型,所以会编译报错,可能会损失精度。

在②c=1+2这一行中,虽然数字默认是int类型,但1和2都是常量,java会先把1+2的结果算出来,把结果3赋给c,而3没有超出byte范围,从而成立。

这一结论,我们可以通过xjad反编译工具清楚的看到。

0 0