黑马程序员技术交流社区

标题: java中有关byte s+=1的问题 [打印本页]

作者: wangyeake    时间: 2016-6-23 10:19
标题: java中有关byte s+=1的问题
java中有关byte s+=1的问题
byte s+=1;
是 byte s=byte(s+1);
还是 byte s=byte s +byte 1; ??
作者: 下届海贼王    时间: 2016-6-23 17:59
byte s=byte(s+1);


作者: 善良的死神达乐    时间: 2016-6-23 19:00
byte s += 1;
这个 += 号是java底层会给你做一个运算,就是byte (s + 1)
但是如果是byte s + byte 1结果就不对了,因为它是你自己手动给出的,java底层不管的。
作者: 懂得珍惜    时间: 2016-6-23 19:10
byte s=byte(s+1);
你记住扩展运算符有隐藏强制转换的作用就行了。
作者: 天之骄子no1    时间: 2016-6-23 20:00
byte类型的变量在参与运算过程中,会自动转化成int类型的参与运算,所以,这道题应该是byte s=(byte)(s+1)
作者: 天之骄子no1    时间: 2016-6-23 20:02
byte类型的变量在参与运算过程中,会自动转化成int类型的参与运算,所以,这道题应该是byte s=(byte)(s+1)
作者: 天之骄子no1    时间: 2016-6-23 20:03
byte类型的变量在参与运算过程中,会自动转化成int类型的参与运算,所以,这道题应该是byte s=(byte)(s+1)
作者: 张雨    时间: 2016-6-23 20:24
个人认为s先提升为int和1相加 之后在强转为byte
作者: 940752944    时间: 2016-6-23 20:27
是,byte = byte(s+1),+=这种运算在底层有一个优化
作者: L1ub0w3n    时间: 2016-6-23 21:25
运算后是需要什么类型直接在运算式子前加上类型即可。
作者: 孟小垚    时间: 2016-6-23 21:30
我就看看,学习一下
作者: 迅雷    时间: 2016-6-23 22:22
byte s = byte(s+1);   (s+1)底层运算的时候会自动强转为byte类型
作者: Ake丶    时间: 2016-6-23 22:33
下届海贼王 发表于 2016-6-23 17:59
byte s=byte(s+1);

正解!!
作者: wangyeake    时间: 2016-6-24 17:19
谢谢大家,明白了
作者: syinys7    时间: 2016-6-24 17:49
扩展运算符+= 是左右相运算后,将结果再次赋值给左边

byte s+=1;
就是             byte s =byte((int)s+1); 运算时,s会先隐性转换为int类型与1相加,然后再将结果强转为byte赋值给s
作者: 15820030540    时间: 2016-6-24 18:44
这类问题其实是java底层实现的,中间不做转换,有些类似于">>"位移,要类似的话 还是byte s=byte(s+1);这个
作者: lifeiwangyue    时间: 2016-6-24 20:45
来学习下 各路解答很对啊
作者: suming    时间: 2016-6-24 23:28
我来这里 学习
作者: 星空@3    时间: 2016-6-25 00:11
两个都不是, 你这样直接写byte s+=1;  编译不会通过吧
作者: 山水云梦    时间: 2016-6-25 00:26
byte(s+1){:2_38:}
作者: kobe240888    时间: 2016-6-26 22:22
byte s=byte(s+1);
作者: Insomnia!    时间: 2016-6-28 17:24
byte s = (byte)(s+1)
作者: 天安门前扫地僧    时间: 2016-6-28 18:23
学习一下
作者: caesar_QMwS4    时间: 2016-6-29 09:58
我觉得是上一个吧!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2