我有一个字符串str,让我们说它的值是“地狱”。
以下语句返回“205hellhe”而不是“hehellhe”
return (str.charAt(0)) + (str.charAt(1))+str+(str.charAt(0)) + (str.charAt(1));
为什么(str.charAt(0))+(str.charAt(1))返回205而不是“he”以及为什么同一个语句最后返回“he”?
答案 0 :(得分:0)
发生这种情况是因为正在添加字符的ASCII代码的值而不是连接。在ASCII中, h 表示为104, e 表示为101.连接不起作用,可能是因为在这种情况下两个操作数都是字符/整数。
答案 1 :(得分:0)
因此奇怪的输出。
修复:
使用StringBuilder
代替
public static void main(String[] args) {
String str = "hell";
StringBuilder buff = new StringBuilder();
buff.append(str.charAt(0))
.append(str.charAt(1))
.append(str)
.append(str.charAt(0))
.append(str.charAt(1));
System.out.println(buff.toString());// prints 'hehellhe'
}