我正在解决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)