小编jod*_*les的帖子

带有charAt()方法的String上的Java + =运算符导致char加法

我正在解决Codingbat.com上的问题,并且碰到了这样一个事实:对于+=运营商来说,a += b并不一定完全等于a = a + b.这是众所周知的,已经让之前讨论过,但我使用的时候碰到了一些奇怪的事情发生charAt()上述语法,我不能做的意义相结合的方法.

说我有两个变量:

String str    = "The";
String result = "";
Run Code Online (Sandbox Code Playgroud)

我想将"str"中的第一个字母添加两次到"结果".一种方法是:

result = result + str.charAt(0) + str.charAt(0);
Run Code Online (Sandbox Code Playgroud)

结果result = "TT".

但是,如果我使用+=运算符,例如:

result += str.charAt(0) + str.charAt(0);
Run Code Online (Sandbox Code Playgroud)

我得到result = "168".很明显,字符添加已经发生('T'的ASCII代码是84,84*2 = 168).

我想知道在使用+=运算符的第一种情况下实际发生了什么.根据关于赋值运算符文档:E1 op= E2相当于E1 = (T)((E1) op (E2)).所以我希望后一个表达式输出"168"就像使用+=运算符一样.但以下输出"TT"正确,而不是"168":

result = (String)(result …
Run Code Online (Sandbox Code Playgroud)

java string operators charat

4
推荐指数
2
解决办法
9810
查看次数

标签 统计

charat ×1

java ×1

operators ×1

string ×1