有关java中数据类型byte,int的一个小问题

先让大家看几句代码

class  Test
{
public static void main(String[] agrs){
byte b = 1;
byte b1 = 2;
byte b2 = 3;
b = b1 + b2;
System.out.println(b);
}
}

对于上面的代码,如果是int型的数据我们经常就是这么用的,然而对于byte型这里在编译会出错

---------- 编译java程序 ----------
Test.java:9: 错误: 可能损失精度
b = b1 + b2;
      ^
  需要: byte
  找到:    int
1 个错误


输出完成 (耗时 1 秒) - 正常终止

这里的原因是因为b= b1+b2;时由于b1,b2是变量,系统不知道,它两加起来的值的大小(byte 值的范围是1个字节8位),即使前面变量的值是确定的,它也会这么提示出错,因为变量的值是可变的,如果b1和b2前面加上final则不出错,那么问题来了


int a = 1;

int b= 3;

int c= 5;

a= b + c;

这样写为什么不出错,int也是有范围的呀,原因在于java中+,-等这些默认int型,如果数值超出范围,就会做出处理。




另外在这里在写个代码,你就会对上面的有更深的理解;


int a = 10;

int b = 0;

int c=4;

c = a / b;


看到这个代码,你一看就知道代码出错,除数不能为0,但是编译器通过了,它可以生产.class文件,但无法运行.class。


这就是为什么  b2b3的值确定了,编译还是通不过,因为在编译时,不会判断你变量的值是几(最后这一句是我自己理解的)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值