黑马程序员技术交流社区

标题: 编码的疑问 [打印本页]

作者: VincentWJ    时间: 2016-3-13 17:30
标题: 编码的疑问
为什么System.out.println('黑' + 0)语句输出的结果是40657而不是“黑0”?
作者: 大大阳    时间: 2016-3-13 18:16
这样输出,会自动以编码的形式相加,你应该用双引号把字括起来。
作者: 参禅悟道    时间: 2016-3-13 18:45
如果你想输出黑0的话,那你应该把单引号换成双引号,把它变成字符串格式的。

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

你运行一下下面这个代码

你的解释好详细,谢谢!
作者: liu631980435    时间: 2016-3-14 22:59
真的吗,好神奇
作者: huhemingtiancai    时间: 2016-3-15 00:38
因为+号可以作为字符串连接符,但是这里'黑'是个char类型的字符而不是字符串,所以+号就代表加法运算,然后自动提升为int类型结果输出,对应的40657在这里是int类型的数值,也对应着ASCⅡ表的黑这个字




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