我的位置:  首页 > JavaSE

java常量优化机制与数据类型转换
作者 王苗森发表时间 2018-08-06浏览 评论

请看两种代码

一、

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运算时要快

上一篇:返回列表

下一篇:返回列表

文章评论

欢迎投稿

投稿邮箱 ffegya@52mail.cn