2009-01-30 114 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”;

相关问题