Java中,两个byte类型相加,结果为啥是int
public class Hello
{
public static void main(String[] args)
{
System.out.println("hello");
byte b1 = 3;
byte b2 = 3;
byte b3 = b1 + b2;
System.out.println(b3);
}
}
结果:
我的想法:这正是因为Java的健壮性?如果两个byte都是127,会损失精度,所以Java设计不允许这么做?在编译阶段就报错了。
所以啊,需要类型转换。
public class Hello
{
public static void main(String[] args)
{
System.out.println("hello");
byte b1 = 3;
byte b2 = 3;
byte b3 = (byte) (b1 + b2);
System.out.println(b3);
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
因为jvm层面,没有byte
b1,b2实际上是以int存储的
不光
byte
,boolean
、short
和char
类型的数值在做数学运算的时候,都会提升为int
。甚至这些变量的 sizeof 都是 4 字节,而非 C/C++ 里类似结构的那样有不同的长度。但倒不是因为精度的问题(精度问题你没法解释为啥
int
+int
!=long
啊),而是 JVM 为了节省指令集,所以一股脑都按int
处理了。