通过连接空字符串在字符串转换中空字符串的顺序

Order of empty string in string conversion by concatenating empty string

在 Java 中有几种执行字符串转换的方法,有些人(包括我自己)更喜欢连接一个空字符串来进行转换:

示例:

char ch = 'A';
String str = "" + ch;   //gets character value and append to str

然而空字符串的顺序对我来说一直是个谜。以下将成功执行字符串转换:

str = ch + "";    
str = ch + "" + ch;  

但不包括以下内容:

str = ch + ch + "";    //if (ch + "") gives us "A", shouldn't this be "65A"?

Que: 为了安全起见,我们总是可以将空字符串放在前面,但我想知道 Java 在(空)字符串时如何解释连接放在其他位置(比如中间或者后面)。

+运算符是左结合的,这意味着它是从左到右分组的。

str = ch + ch + "";

这相当于

str = (ch + ch) + "";
 // = ('A' + 'A') + "";
 // = 130 + "";
 // = "130";

没有

str = ch + (ch + "");
 // = 'A' + ('A' + "");
 // = 'A' + "A";
 // = "AA";

char + StringString + char 都会导致 String。但是 char + char returns 一个 int。你现在明白为什么第二个 + ch 不起作用了吗?