通过连接空字符串在字符串转换中空字符串的顺序
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 + String
和 String + char
都会导致 String
。但是 char + char
returns 一个 int
。你现在明白为什么第二个 + ch
不起作用了吗?
在 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 + String
和 String + char
都会导致 String
。但是 char + char
returns 一个 int
。你现在明白为什么第二个 + ch
不起作用了吗?