黑马程序员技术交流社区

标题: 基础测试题 [打印本页]

作者: jerom023    时间: 2014-7-29 16:15
标题: 基础测试题
以下代码哪个是正确的?为什么?

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;
作者: 钟伟    时间: 2014-7-29 16:17
我选的是ACD
作者: dingpanbo    时间: 2014-7-29 16:32
就c正确的。一,系统默认是int型的。二、可以自我提升的是+=这个运算。
作者: star5603    时间: 2014-7-29 16:47
cd应该都可以吧
作者: 天黑偷牛    时间: 2014-7-29 17:25
本帖最后由 天黑偷牛 于 2014-7-29 17:27 编辑

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

要想让b编译通过,b=(short)(b+1)




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