字符串形成字符串的结果不同

字符串形成字符串的结果不同,第1张

字符串形成字符串的结果不同

以下表达式的结果

ret + str.charAt(i) + str.charAt(i);

是String连接的结果。Java语言规范说明

字符串串联的结果是对String对象的引用,该对象是两个 *** 作数字符串的串联。在新创建的字符串中,左侧 *** 作数的字符位于右侧 *** 作数的字符之前。

的结果

str.charAt(i) + str.charAt(i);

是将加法运算符应用于两个数字类型的结果。Java语言规范说明

当应用于两个数字类型的 *** 作数时,binary +运算符将执行加法运算,从而得出这些 *** 作数的总和。[…]数字 *** 作数上加法表达式的 类型是其 *** 作数的
提升 类型。

在这种情况下

str.charAt(i) + str.charAt(i);

成为

int
两个
char
值的和。然后将其连接到
ret


您可能还想了解有关复合赋值表达式的信息

+=

形式的复合赋值表达式

E1 op= E2
等效于
E1 = (T) ((E1) op(E2))
,其中
T
是的类型
E1
,不同之处在于该表达式
E1
仅被评估一次。

换一种说法

ret += str.charAt(i) + str.charAt(i);

相当于

ret = (String) ((ret) + (str.charAt(i) + str.charAt(i)));|     ^ integer addition|^ string concatenation


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5477819.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-12
下一篇2022-12-12

发表评论

登录后才能评论

评论列表(0条)

    保存