站点刚更新,有问题请联系QQ 2535458415

java常量优化机制与数据类型转换

编程 王苗森 265℃ 0评论

请看两种代码

一、

byte a1=1,a2=2,a3,a4;

a3=a1+a2;

a4=1+2;

这段代码有没有问题,有问题的话出在第几行,为什么有问题,怎样改?

解答:

代码有问题,原因如下

1. 第2行,a3=a1+a2,Java中,byte short char在计算时将会被转为int类型,a1+a2这个变量是int类型的,将其赋值给a3必定编译出错;

2. 第3行正确,Java有常量优化机制,在编译时已经把1+2的结果即3赋给了a4,虽然在java中常量整形的默认数据类型是int,浮点形的默认数据类型是double,但也可将其赋值给byte short,只是当常量的值在被赋给变量数据类型范围之外时,打印该变量时的结果不对,

byte test1=128;

System.out.println(test1);

Console输出:

-128

二、

byte a=1;

a++;

a+=1;

a=a+1;

这段代码有没有错误,如果有,错误在哪里,为什么出错,怎么改?

答案:

有错误,错误在第4行

原因:

1.第4行代码a+1为int类型的变量,将其赋值给a(byte类型)会编译出错

2.第2、3行代码没有错误,a+=1;<=>a=(byte)(a+1);,a++;会自动转换变量类型

3. a+=1中的+=是一个运算符,这比a=a+1运算时要快

转载请注明:医学园地 » java常量优化机制与数据类型转换

喜欢 (2)

您必须 登录 才能发表评论!

(2)个小伙伴在吐槽
  1. :mrgreen:
    匿名2018-09-28 23:42
  2. :mrgreen: 好好好
    匿名2018-09-28 23:43