gpt4 book ai didi

java - 为什么一个 char + 另一个 char = 一个奇怪的数字

转载 作者:行者123 更新时间:2023-12-04 16:05:56 25 4
gpt4 key购买 nike

这是代码片段:

public static void main (String[]arg) 
{
char ca = 'a' ;
char cb = 'b' ;
System.out.println (ca + cb) ;
}

输出是:

195

为什么会这样?我认为 'a' + 'b' 可以是 "ab""12"3.

这是怎么回事?

最佳答案

两个 char

+ 是算术加法,不是字符串连接。您必须执行类似 ""+ ca + cb 的操作,或使用 String.valueOfCharacter.toString 方法来确保至少有一个+ 的操作数是一个String 运算符,用于字符串连接。

JLS 15.18 Additive Operators

If the type of either operand of a + operator is String, then the operation is string concatenation.

Otherwise, the type of each of the operands of the + operator must be a type that is convertible to a primitive numeric type, or a compile-time error occurs.

至于为什么你得到 195,这是因为在 ASCII 中,'a' = 97'b' = 98,以及 97 + 98 = 195


这执行基本的 intchar 转换。

 char ch = 'a';
int i = (int) ch;
System.out.println(i); // prints "97"
ch = (char) 99;
System.out.println(ch); // prints "c"

这忽略了字符编码方案的问题(初学者不应该担心......但是!)。


请注意,Josh Bloch 指出,+ 为字符串连接和整数加法重载是相当不幸的(“为字符串连接重载 + 运算符可能是一个错误。 “——Java 谜题,谜题 11:笑到最后)。通过使用不同的字符串连接标记,可以轻松避免很多此类混淆。


另见

关于java - 为什么一个 char + 另一个 char = 一个奇怪的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2429494/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com