您的位置:首页 > 编程语言 > Java开发

初学JAVA一些类型运算以及类型转换细节

2017-03-12 17:01 246 查看
在java中,如下编写

byte b = 4;

b = 3 + 7;

编译能通过,但如果像下面这样编写,则编译无法通过,关键在于最后一句b=b1+b2上

byte b = 3;

byte b1 = 2;

byte b2 = 9;

 b = b1 + b2;

原因:

首先,定义byte b = 4;为什么能通过,是因为java中默认整型都为int类型,所以java默认 4 为int 型,本来按类型是不能将4赋值给变量b的,但是编译器检查4这个数值不超过byte的取值范围(-128~127),所以编译器自动强制类型转换将int型转化成byte型,将4赋给了b。

而在下面一个例子中,由于b1与b2都为变量,编译时无法确定值,编译器无法确定b1 + b2的值是否会超过byte的取值范围,所以编译的时候报错:损失精度!

而:

int x = 4;

int x1 = 3;

int x2 = 98;

x = x1 + x2;

编译时却可以通过,是因为运算结果一定为整数,java默认为整数是int所以可以编译通过(好吧,这里我也不太懂,望大神解答)

7ebc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: