黑马程序员技术交流社区

标题: 回答下这两句话结果为什么不同? [打印本页]

作者: zhucong1    时间: 2016-12-4 23:53
标题: 回答下这两句话结果为什么不同?
        * System.out.println("hello"+'a'+1);
        * System.out.println('a'+1+"hello");


作者: liudan    时间: 2016-12-5 08:33
从左往右运算  第一个输出 helloa1
第二个输出 bhello  
输出应该是这样

作者: zhucong1    时间: 2016-12-5 23:06
liudan 发表于 2016-12-5 08:33
从左往右运算  第一个输出 helloa1
第二个输出 bhello  
输出应该是这样

第二个答案不对吧,是98hello
作者: Lee_Hoon_Leong    时间: 2016-12-10 10:59
应该是java的自动类型提升,char类型无法加一,就转换为unicod码表加一。
作者: Lee_Hoon_Leong    时间: 2016-12-10 11:08
Lee_Hoon_Leong 发表于 2016-12-10 10:59
应该是java的自动类型提升,char类型无法加一,就转换为unicod码表加一。

至于'a'+1结果是98而不是b。因为在Java中char占了两个字节而int占了四个字节,会自动向上提升类型,所以先转换为int值后再做运算,也可以向下强转型(char)('a'+1)让其以字符的形式输出。而String字符串是引用数据类型,自动类型提升只针对于基础数据类型
作者: dingyilin    时间: 2016-12-12 23:51
看不懂楼主知道答案了没
作者: 袁志娜    时间: 2016-12-15 23:29

作者: SilentNight    时间: 2016-12-17 23:56
字符串在前 有加号连接以字符串连接  第二个就是  计算 然后输出了





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