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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 张向辉 于 2013-2-10 13:27 编辑

System.out.println('a'+1);//输出98为什么不输出b

System.out.println("a"+1);//为什么输出a1

3 个回复

正序浏览
我组织一下语言, 可能我说得不太准确。
  第一个System.out.println('a'+1);//输出98为什么不输出b    这应该是运算类型提升到int类型,系统默认类型是int类型
      你要输出为b , 要强转类型才得。
第二个 System.out.println("a"+1);//为什么输出a1     这个是真心郁闷了,  字符串数据和任何数据使用+都是相连接,最终都会变成字符串。

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
我的理解是:对于第一条语句,因为你是用字符a和常量相连的,那么就会将字符a转换成a在ASCⅡ中对应的值为97,然后计算和1相加的之后再打印输出
对于第二条语句,是字符串与常量相连接,会将常量转换成字符串,然后在输出,所以结果是a1

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
('a'+1);这里的'a'字符参与运算会当成与之对于的97,所以97+1就是98 这里的加号是运算符,所以会相加,如果想输出b ,可以加上char转化为字符, 即:(char)('a'+1);   
("a"+1)这里的"a"是字符串,字符串和“+”相连接加号都是字符串连接符,不是运算符,所以不会参与运算,a和1相连也就是a1   希望能帮到你

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马