java中 单独编译为什么会报错

byte b=10;
b=b+10;
System.out.println(b);

12个回答

java是一种强类型语言,运算时,转换的一般原则是位少的类型转换为位数多的类型;10 是int 类型,32位,和byte类型8位相加,结果是int 类型的,可以这样 :b = (byte) (10 + b);

要么b=(byte)(b+10);要么int b = 10;
b + 10,因为后面的10被当作整数,所以表达式的结果也是整数,而没有整数到byte的隐式类型转换,所以编译错误。

这已经转化成byte类型和int类型之间的转换问题了。这个自己再看看吧。

后面计算 默认成Int类型了

你应该考虑一下不同类型之间的转换问题,四楼说的很对

你应该考虑一下不同类型之间的转换问题,四楼说的很对

类型转换的问题,你第二句话已经隐形将数据类型转换了

在Java中,与数字有关的数据类型为:字节型(byte)->短整型(short)->整型(int)->长整型(long)->浮点型(float)->双精度型(double)
从左往右字节位数依次递增,在类型转换时可以从字节位数低的直接自动的转换到字节位数高的数据类型。
在你代码中的第二句b=b+10;中却把右侧表达式的整数结果赋给了byte,所以报了数据转换错误。解决方案就是强制类型转换:b = (byte) (b + 10);

如果答案满意,望采纳!

属于强制类型转换和自动类型提升概念,建议楼主看看这方面的知识。
byte b=10;
b=b+10;
System.out.println(b);
跟前面的各层楼前辈说的一样,b=b+10;结果已经转换成了int类型了,而第一行设置的是byte类型:byte b = 10;所以最后输入,
如果要为byte,那么需要进行强制类型转换b = (byte)(b + 10);否则就是int类型的(自动类型提升了).

byte,short,int,long,范围一个比一个大,b+1默认是转换层Int型的,而Java中有向上转型,没有向下转型,int不能转成byte,所以b=b+1会报错,

共12条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐