2009-01-30 101 views

回答

9

「。」是一個字符串,'。'是一個字符。

24

用雙引號括起來的文字"foo",是字符串,而單引號文字,例如, 'c',分別是字符。在連接行爲方面,不會有明顯的差異。

儘管如此,值得記住的是,字符串和字符在所有場景中都不可互換,並且不能有由多個字符組成的單引號字符串。

+0

要迂腐,'\ n'是一個char可接受的值(儘管嚴格來說,這只是一個char,即使表示爲兩個)。 – 2009-01-30 20:53:08

+0

*點頭* - 我主要試圖指出,這兩種引用是不可互換的,因爲它們在許多其他語言中。 – Rob 2009-01-30 21:19:39

3

「。」是隻包含一個字符的字符串。 ''是一個角色。

將它們連接在一起後就沒有區別。

+0

實際上有一個細微的差別,它追加字符比單字符字符串稍快。儘管這種差異非常小,但它確實無關緊要。 – Esko 2009-01-30 20:33:17

1

從理論上說,將字符添加到字符串更快 - Java 6似乎在封面下創建了StringBuffers,並且我記得在連接字符的Java Performance網站上讀取會稍微快一些。

3

''用於字符文字。因爲AR是不是字面字符

「OSC」 + 'AR' + 「雷耶斯」

所以你不能做到這一點。

在你的榜樣它並沒有太大的差別,因爲

'/' 

是一個char文字和

"/" 

是隻包含一個字符的字符串文字。

另外,你可以使用任何UTF字符與下面的語法

'\u3c00' 

所以,你也可以使用:

"Osc" + '\u3c00' + "ar 
2

添加一個char是不是添加一個字符串快約25%。常常這並不然而重要,例如

String s = "hello" + "/" + "world"; 

這是由編譯器變換爲一個字符串所以沒有字符串連接/追加將發生在在任何情況下運行時。

12
System.out.println('a'+'b'+'c'); 
> 294 
System.out.println("a"+"b"+"c"); 
> abc 

這裏發生的事情是,(焦炭)+(焦炭)=(INT )換句話說, 。使用「」來避免意外。

4

你可能只是考慮了JDK :-)

假設有兩個功能:

public static String concatString(String cs) { 
    return "hello" + cs + "world"; 
} 

public static String concatChar(char cc) { 
    return "hello" + cc + "world"; 
} 

字節碼的檢查後它歸結於兩個AbstractStringBuilder.append(String)AbstractStringBuilder.append(char)

這兩種方法都調用AbstractStringBuilder.expandCapacity(int))這將分配一個新的炭[]最終和System.arraycopy舊的內容第一個。

之後AbstractStringBuilder.append(char)只是必須把給定char數組中,而AbstractStringBuilder.append(String)必須檢查一些限制和要求String.getChars(int, int, char[], int)這確實另一System.arraycopy附加字符串

0

char theLetterA ='A'; string myString =「a string」;