gpt4 book ai didi

java - 意外的 java charAt 输出

转载 作者:行者123 更新时间:2023-11-29 07:47:41 26 4
gpt4 key购买 nike

代码是

String veggie = "eggplant";
int length = veggie.length();
char zeroeth = veggie.charAt(0);
char third = veggie.charAt(4);
String caps = veggie.toUpperCase();
System.out.println(veggie + " " + caps);
System.out.println(zeroeth + " " + third + " " + length);
System.out.println(zeroeth + third + length);

输出如下:

eggplant EGGPLANT   
e 1 8
217

这对我来说没有意义。引用 charAt 输出数字而不是字符。我期待它输出字符。我做错了什么?

最佳答案

第二行实际上应该是:

e l 8

(请注意,第二个值是小写的 L,而不是 1)这可能不会违反您的预期。尽管您的变量被混淆地称为 third,尽管它是字符串中的 fifth 字符。

只剩下第三行了。表达式的类型

zeroeth + third + length

is int...您正在执行算术加法。不涉及到 String 的隐式转换,因此,从每个操作数到 int 的二进制数字提升。它是有效的:

System.out.println((int) zeroeth + (int) third + (int) length);

它是将“e”、“l”和 8(长度)中涉及的 UTF-16 代码单元相加。

如果你想涉及字符串转换,那么你可以使用:

System.out.println(String.valueOf(zeroeth) + third + length);

只有第一个加法需要是字符串连接...之后,它会因结合性而流动。 (即 x + y + z(x + y) + z;如果 x + y 的类型是 String,那么第二次加法也变成了字符串拼接。)

关于java - 意外的 java charAt 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24067173/

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