A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wangyeake 中级黑马   /  2016-6-23 10:19  /  1659 人查看  /  23 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java中有关byte s+=1的问题
byte s+=1;
是 byte s=byte(s+1);
还是 byte s=byte s +byte 1; ??

23 个回复

倒序浏览
byte s=byte(s+1);

回复 使用道具 举报
byte s += 1;
这个 += 号是java底层会给你做一个运算,就是byte (s + 1)
但是如果是byte s + byte 1结果就不对了,因为它是你自己手动给出的,java底层不管的。
回复 使用道具 举报
byte s=byte(s+1);
你记住扩展运算符有隐藏强制转换的作用就行了。
回复 使用道具 举报 1 0
byte类型的变量在参与运算过程中,会自动转化成int类型的参与运算,所以,这道题应该是byte s=(byte)(s+1)
回复 使用道具 举报
byte类型的变量在参与运算过程中,会自动转化成int类型的参与运算,所以,这道题应该是byte s=(byte)(s+1)
回复 使用道具 举报
byte类型的变量在参与运算过程中,会自动转化成int类型的参与运算,所以,这道题应该是byte s=(byte)(s+1)
回复 使用道具 举报
张雨 中级黑马 2016-6-23 20:24:26
8#
个人认为s先提升为int和1相加 之后在强转为byte
回复 使用道具 举报
是,byte = byte(s+1),+=这种运算在底层有一个优化
回复 使用道具 举报
运算后是需要什么类型直接在运算式子前加上类型即可。
回复 使用道具 举报
我就看看,学习一下
回复 使用道具 举报
byte s = byte(s+1);   (s+1)底层运算的时候会自动强转为byte类型
回复 使用道具 举报

正解!!
回复 使用道具 举报
谢谢大家,明白了
回复 使用道具 举报
扩展运算符+= 是左右相运算后,将结果再次赋值给左边

byte s+=1;
就是             byte s =byte((int)s+1); 运算时,s会先隐性转换为int类型与1相加,然后再将结果强转为byte赋值给s
回复 使用道具 举报
这类问题其实是java底层实现的,中间不做转换,有些类似于">>"位移,要类似的话 还是byte s=byte(s+1);这个
回复 使用道具 举报
来学习下 各路解答很对啊
回复 使用道具 举报
我来这里 学习
回复 使用道具 举报
两个都不是, 你这样直接写byte s+=1;  编译不会通过吧
回复 使用道具 举报
byte(s+1){:2_38:}
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马