黑马程序员技术交流社区

标题: 考考你们的基础! [打印本页]

作者: wksvo    时间: 2016-4-3 15:27
标题: 考考你们的基础!
下面三句,哪个会报错,为什么?(不准百度、翻书)byte b=20;
b++;
b = b + 1;


作者: Yoyoqiu    时间: 2016-4-3 16:37
b=b+1 ; 错啦  超出范围
作者: wksvo    时间: 2016-4-3 16:42
Yoyoqiu 发表于 2016-4-3 16:37
b=b+1 ; 错啦  超出范围

不是超出范围啊,byte取值范围是-127~126,说的不对哈哈
作者: IT小笨鸟    时间: 2016-4-3 16:55
b=b+1 ; 错啦,Java数值运算默认是int,b+1运算后的数据类型是int,要做数据类型转换才行,控制台会报类型错误
作者: wksvo    时间: 2016-4-3 17:00
IT小笨鸟 发表于 2016-4-3 16:55
b=b+1 ; 错啦,Java数值运算默认是int,b+1运算后的数据类型是int,要做数据类型转换才行,控制台会报类型错 ...

对了。。。。。。。。。。
作者: 715596417    时间: 2016-4-3 17:30
b++隐含了强制类型转换,b=b+1类型不匹配
作者: fanlelong    时间: 2016-4-3 18:32
b++;等于 b = byte(b+1)自带强转   b = b+1 ;  b+1会自动转换为int类型,而b是byte有可能损失精度,会报错
作者: 747844695    时间: 2016-4-3 21:08
明显第三个  啊
作者: hkh3321313    时间: 2016-4-3 21:42
视频里有讲这个诶⊙▽⊙
作者: aomingchao    时间: 2016-4-3 21:54
b=b+1;这句有错,因为b是byte类型的,不能直接和1进行运算
作者: itgaga    时间: 2016-4-3 21:56
ava数值运算默认是int,b+1运算后的数据类型是int,要做数据类型转换才行,控制台会报类型错
作者: 张辉龙    时间: 2016-4-3 22:04
b=b+1;错了,b+1得到的结果系统会默认为int类型的,而b是byte类型的,要做强转,比如:b=(byte)b+1;否则系统会报错
作者: a9623a    时间: 2016-4-3 22:08
第二行,b+1运算时转成int型,再赋值给b需要强制转化
作者: zx7750462    时间: 2016-4-3 22:14
这种简单的问题,b=b+1;b+1是int类型,b是byte型,赋值时会损失精度并且可能会超出取值范围.
作者: 系米粒    时间: 2016-4-4 00:48
涨姿势了
作者: HuaQuan    时间: 2016-4-4 01:07
学到东西了,给楼主一个赞!
作者: huhemingtiancai    时间: 2016-4-4 01:44
这个得记住,挺有用的
作者: 守徒徒    时间: 2016-4-4 14:11
b = b + 1报错,因为b++已经在内部做了强壮,而第三句b+1后和的类型提升为int,此时如果再赋值给byte类型的b的话,需要int强转。
作者: LLQALLQ    时间: 2016-4-4 14:34
学习啦。。
作者: 小灰辉    时间: 2016-4-4 14:57
b++;底层是默认 做了 强转动作 .编译可以正常运行;

b+1; 1是int 类型 b是byte类型的.b需要向上提升 而 b = b+1;运行之后 会损失精度. 需要强转.
作者: lmr1096200234    时间: 2016-4-4 20:41
第二个  会类型提升  需要强制转换
作者: lwh88866    时间: 2016-4-4 20:47
低二个!  
作者: lwh88866    时间: 2016-4-4 20:50
b=b+1会报错.
bs是byte型,  1是int型, 直接相加会损失精度
而 ++具有数据自动转换功能




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