2016-10-03 53 views
2

有幾種方法來執行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"? 

闕:爲了安全起見,我們可以始終將空字符串盈,但我想知道當(空)字符串被放置在其他位置(例如在之間或在後面)時,Java如何解釋串聯。

+0

我想關閉[this]的重複,但是我想要關閉[this](http://stackoverflow.com/questions/21387948/the-concatenation-of-chars-to-form-a-string-gives-different-results)未定。一探究竟。 –

+0

@SotiriosDelimanolis鏈接的問題和解決方案是一個不同的問題。他們只提到添加字符,但我要求連接空字符串,特別是它的位置如何影響結果。 – user3437460

回答

4

+運算符是左關聯的,這意味着它從左到右分組。

str = ch + ch + ""; 

這相當於

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

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

char + StringString + char兩個結果在String。但char + char返回int。你現在看到爲什麼第二個+ ch不起作用?

+0

簡短而甜美。這就解釋了一切,包括爲什麼在前面放置''「'將整行代碼轉換爲字符串的原因,因爲每個後續字符都將在其之前添加轉換字符串。 +1並在時間鎖定結束時接受。 – user3437460