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

use*_*460 2 java string string-concatenation string-conversion

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

例:

char ch = 'A';
String str = "" + ch;   //gets character value and append to str
Run Code Online (Sandbox Code Playgroud)

但是,空字符串的顺序对我来说始终是个谜。以下将成功执行String转换:

str = ch + "";    
str = ch + "" + ch;  
Run Code Online (Sandbox Code Playgroud)

但不是以下内容:

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

e:为安全起见,我们总是可以将空String放在前面,但是我想知道当(空)字符串放在其他位置(例如在中间或后面)时Java如何解释串联。

Joh*_*ica 5

+运营商是向左结合的,这意味着它从分组左到右。

str = ch + ch + "";
Run Code Online (Sandbox Code Playgroud)

这相当于

str = (ch + ch) + "";
 // = ('A' + 'A') + "";
 // = 130 + "";
 // = "130";
Run Code Online (Sandbox Code Playgroud)

str = ch + (ch + "");
 // = 'A' + ('A' + "");
 // = 'A' + "A";
 // = "AA";
Run Code Online (Sandbox Code Playgroud)

char + StringString + char这两种结果的String。但char + char返回int。您现在知道为什么一秒钟+ ch不起作用了吗?