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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jerom023 中级黑马   /  2014-7-29 16:15  /  1114 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

以下代码哪个是正确的?为什么?

a. byte b = 1 + 1;     
b. byte b = 1; b = b + 1;
c. byte b = 1; b = b += 1;   
d. byte b = 1; b = ++b;

点评

http://bbs.itheima.com/thread-127149-1-1.html  发表于 2014-7-29 16:51

7 个回复

倒序浏览
我选的是ACD
回复 使用道具 举报
就c正确的。一,系统默认是int型的。二、可以自我提升的是+=这个运算。
回复 使用道具 举报
cd应该都可以吧
回复 使用道具 举报
本帖最后由 天黑偷牛 于 2014-7-29 17:27 编辑

ACD都正确,A中没有超过-128----127会自动转换,超过这个范围需要强制转换。B中b和1不同类型,要类型提升为int,需要强制转换。CD这种情况b+=1;b++这种的会自动转换
回复 使用道具 举报
这道题考的是赋值中,左右边两的数据类型是否一致。第一个右边1的数据类型是int,但由于1在short范围内,会自动强转,java运算中如果有++或者+=都会把右边自动强转为左边数据类型,所以acd正确。b不正确是因为左右类型不一致,b+1是int类型,由于b是局部变量,所有无法判断取值范围,故不正确
回复 使用道具 举报
MGC 中级黑马 2014-7-29 17:33:38
7#
MGC 发表于 2014-7-29 17:32
这道题考的是赋值中,左右边两的数据类型是否一致。第一个右边1的数据类型是int,但由于1在short范围内,会 ...

要想让b编译通过,b=(short)(b+1)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马