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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© VincentWJ 中级黑马   /  2016-3-13 17:30  /  610 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么System.out.println('黑' + 0)语句输出的结果是40657而不是“黑0”?

5 个回复

倒序浏览
这样输出,会自动以编码的形式相加,你应该用双引号把字括起来。
回复 使用道具 举报
如果你想输出黑0的话,那你应该把单引号换成双引号,把它变成字符串格式的。

你运行一下下面这个代码
char a='黑';
int i=(int)a;
System.out.println(i);
输出的结果同样是:40657
所以我估计‘黑’这个字符所对应的ascll值是40657。
当你输出(‘黑’+0)的时候,会把‘黑’转换成int类型的数据然后再和0相加,所以得到的结果肯定是40657
不知道我这样的解释对不对,坛主给个话。
回复 使用道具 举报
参禅悟道 发表于 2016-3-13 18:45
如果你想输出黑0的话,那你应该把单引号换成双引号,把它变成字符串格式的。

你运行一下下面这个代码

你的解释好详细,谢谢!
回复 使用道具 举报
真的吗,好神奇
回复 使用道具 举报
因为+号可以作为字符串连接符,但是这里'黑'是个char类型的字符而不是字符串,所以+号就代表加法运算,然后自动提升为int类型结果输出,对应的40657在这里是int类型的数值,也对应着ASCⅡ表的黑这个字
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马