为啥 ('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
文字,两个char
s 之间的+
运算符返回一个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? [复制]的主要内容,如果未能解决你的问题,请参考以下文章