新手提问

自挂东南只 2017-08-01 06:37:50
public class ByteDemo
{
public static void main(String[] args)
{
byte b,b1,b2,c;
b1 = 2;
b2 = 3;
b = (byte)(b1+b2);//为什么这里需要强转
c = 3+4;//这里就不需要强转
System.out.println(b);
System.out.println(c);
}
}
...全文
115 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
自挂东南只 2017-08-01
  • 打赏
  • 举报
回复
引用 4 楼 phantom7493 的回复:
[quote=引用 3 楼 qq_34928194 的回复:] 那为什么这里需要强转,b1b2 都是byte应该直接可以运算的才对啊
因为相加可能超出byte范围,所以2个byte类型的变量相加时会自动提升为int。[/quote] 解决了很大一个疑问,十分感谢!
wautsns 2017-08-01
  • 打赏
  • 举报
回复
引用 3 楼 qq_34928194 的回复:
那为什么这里需要强转,b1b2 都是byte应该直接可以运算的才对啊
因为相加可能超出byte范围,所以2个byte类型的变量相加时会自动提升为int。
自挂东南只 2017-08-01
  • 打赏
  • 举报
回复
b = (byte)(b1+b2); 那为什么这里需要强转,b1b2 都是byte应该直接可以运算的才对啊
wautsns 2017-08-01
  • 打赏
  • 举报
回复
java的常量优化机制。编译时直接将7赋值给c.所以编译不报错。
自挂东南只 2017-08-01
  • 打赏
  • 举报
回复
疑惑: b = (byte)(b1+b2);//为什么这里需要强转 b,b1,b2都是byte型的,运算为何还要强转? c=3+4;3,4是int型的,为何不用强转

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧