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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wksvo 中级黑马   /  2016-4-3 15:27  /  1508 人查看  /  22 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

下面三句,哪个会报错,为什么?(不准百度、翻书)byte b=20;
b++;
b = b + 1;

22 个回复

倒序浏览
b=b+1 ; 错啦  超出范围
回复 使用道具 举报
Yoyoqiu 发表于 2016-4-3 16:37
b=b+1 ; 错啦  超出范围

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

对了。。。。。。。。。。
回复 使用道具 举报
b++隐含了强制类型转换,b=b+1类型不匹配
回复 使用道具 举报
b++;等于 b = byte(b+1)自带强转   b = b+1 ;  b+1会自动转换为int类型,而b是byte有可能损失精度,会报错
回复 使用道具 举报
明显第三个  啊
回复 使用道具 举报
hkh3321313 来自手机 中级黑马 2016-4-3 21:42:59
9#
视频里有讲这个诶⊙▽⊙
回复 使用道具 举报
b=b+1;这句有错,因为b是byte类型的,不能直接和1进行运算
回复 使用道具 举报
ava数值运算默认是int,b+1运算后的数据类型是int,要做数据类型转换才行,控制台会报类型错
回复 使用道具 举报
b=b+1;错了,b+1得到的结果系统会默认为int类型的,而b是byte类型的,要做强转,比如:b=(byte)b+1;否则系统会报错
回复 使用道具 举报
第二行,b+1运算时转成int型,再赋值给b需要强制转化
回复 使用道具 举报
这种简单的问题,b=b+1;b+1是int类型,b是byte型,赋值时会损失精度并且可能会超出取值范围.
回复 使用道具 举报
涨姿势了
回复 使用道具 举报
HuaQuan 来自手机 中级黑马 2016-4-4 01:07:35
16#
学到东西了,给楼主一个赞!来自: iPhone客户端
回复 使用道具 举报
huhemingtiancai 来自手机 中级黑马 2016-4-4 01:44:25
17#
这个得记住,挺有用的
回复 使用道具 举报
b = b + 1报错,因为b++已经在内部做了强壮,而第三句b+1后和的类型提升为int,此时如果再赋值给byte类型的b的话,需要int强转。
回复 使用道具 举报
学习啦。。
回复 使用道具 举报
b++;底层是默认 做了 强转动作 .编译可以正常运行;

b+1; 1是int 类型 b是byte类型的.b需要向上提升 而 b = b+1;运行之后 会损失精度. 需要强转.
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马