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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yoghurt29 中级黑马   /  2016-4-26 22:49  /  576 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

怎么回事

4 个回复

倒序浏览
gsa798780633 来自手机 中级黑马 2016-4-26 22:57:40
沙发
"a"是字符串,相加时int自动转型为String了,如果是单引号结果就一样
回复 使用道具 举报
“a”是字符串,也是是一个String类对象,而+符号可以是数学的加号,也是连接符,当“a”+1是它是连接符,所以int类型会自动转换成String类型,就会不一样
回复 使用道具 举报
因为a是String类型的  在前面输出会把后面的也弄成String类型输出
回复 使用道具 举报

  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码表)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马