为啥 ('1'+'1') 在 Java 中输出 98? [复制]

Posted

技术标签:

【中文标题】为啥 (\'1\'+\'1\') 在 Java 中输出 98? [复制]【英文标题】:Why does ('1'+'1') output 98 in Java? [duplicate]为什么 ('1'+'1') 在 Java 中输出 98? [复制] 【发布时间】:2020-05-11 10:10:32 【问题描述】:

我有以下代码:

class Example
    public static void main(String args[])

        System.out.println('1'+'1');

    

为什么会输出98

【问题讨论】:

相关:In Java, is the result of the addition of two chars an int or a char? 我怀疑这个问题是重复的。我还没有找到确切的原件。 您期望得到哪个输出(如果您有任何期望)? 2? 11?编译时错误? 这能回答你的问题吗? Is there a difference between single and double quotes in Java? 另见Concatenate chars to form String in java,它告诉您如何从 char 构建字符串。 【参考方案1】:

在 java 中,每个字符文字都与一个 ASCII 值相关联,即Integer

你可以找到所有的ASCII值here

'1' 映射到 ASCII 值 49(int 类型)。 因此'1' + '1' 变为49 + 49,这是一个整数 98。

如果你将此值转换为char 类型,如下所示,它将打印 98 的 ASCII 值,即b

System.out.println( (char) ('1'+'1') );

如果您的目标是连接 2 个字符(意思是,您期望示例中的 "11"),请考虑先将它们转换为字符串。通过使用双引号 "1" + "1" 或提到的 here 。

【讨论】:

【参考方案2】:

'1' 是一个char 文字,两个chars 之间的+ 运算符返回一个int。字符 '1' 的 unicode 值为 49,因此当您将其中两个相加时,您将得到 98。

【讨论】:

字符文字看起来像单个字符串,但不是。【参考方案3】:

'1' 表示一个字符,计算结果为该字符的相应 ASCII 值,1 为 49。将其中两个相加得到 98。

【讨论】:

【参考方案4】:

49 是 1 的 ASCII 值。所以'1' +'1' 等于49 + 49 = 98

【讨论】:

【参考方案5】:

'1' 是聊天文字,它代表 ASCII 值,即 49 所以'1'+'1'=98 的总和。

我在这里分享ASCII 表格作为图像。如果您从 0 开始按列计数,那么1 排在第 49 位。抱歉,我附上图片以获得更好的解释。

【讨论】:

【参考方案6】:

'1'char 文字,两个字符之间的 + 运算符返回一个 int。字符 '1' 的 unicode 值为 49,所以49 + 49 等于 98。

【讨论】:

以上是关于为啥 ('1'+'1') 在 Java 中输出 98? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

java中 求pi时 为啥输出的是4.0啊?

为啥MyEclipse的Console输出中文为乱码?

为啥idea按9,就直接变成看本地更改的文件了

为啥 cout 的输出 << 7/9*9;是零?

Java中的Set类差集问题?差集为啥是1,2不是1,2,8,9,;

算法(第4版)-1.1.9 输入输出