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

本文探讨了Java中byte类型的赋值与运算规则,解释了为何直接赋值整数常量可以编译通过,而两个byte变量相加再赋值给另一个byte变量时会报错的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在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所以可以编译通过(好吧,这里我也不太懂,望大神解答)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值