黑马程序员技术交流社区

标题: 输出1+"a"和"a"+1为什么不一样 [打印本页]

作者: yoghurt29    时间: 2016-4-26 22:49
标题: 输出1+"a"和"a"+1为什么不一样
怎么回事
作者: gsa798780633    时间: 2016-4-26 22:57
"a"是字符串,相加时int自动转型为String了,如果是单引号结果就一样
作者: 张狮子    时间: 2016-4-26 23:08
“a”是字符串,也是是一个String类对象,而+符号可以是数学的加号,也是连接符,当“a”+1是它是连接符,所以int类型会自动转换成String类型,就会不一样
作者: leo_yang    时间: 2016-4-26 23:12
因为a是String类型的  在前面输出会把后面的也弄成String类型输出
作者: yanwenyong    时间: 2016-4-26 23:19

  1.                 System.out.println(1+"a");
  2.                 System.out.println("a"+1);
  3.                 System.out.println(1+'a');
  4.                 System.out.println('a'+1);
复制代码


执行结果是
1a
a1
98
98


先说前两个,为什么一个是 1a  一个是 a1   
这个涉及到不同类型数据相加的自动转换问题
当1+“a”  因为a是由双引号括起来,因此a是作为一个字符串类型的数据出现
当一个int 类型的数据 与字符串类型的数据相加,便会成为一个字符串类型的数据
起始在程序中的显示为“1a”
"a"+1类似字符串与int类型相加 int转变为字符串类型 所以变成了"a1"


至于说为什么单引号的相加 就会相等
那是因为 单引号是字符类型的数据  字符类型的数据与int类型的数据相加
字符类型会自动转换成int类型的数据
至于为什么是98
其实'a'+1  相当于 97+1
字符a  转换成了 97(具体什么字符转换成int类型什么值 可以参考一下ASCII码表)




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