使用''和“”连接字符串有什么区别吗?
例如,有什么区别:
String s = "hello" + "/" + "world";
和
String s = "hello" + '/' + "world";
提前致谢。
答案 0 :(得分:24)
用双引号括起来的文字,例如"foo"
,字符串,而单引号文字,例如'c'
,字符。在连接行为方面,没有明显的区别。
尽管如此,值得记住的是,字符串和字符在所有情况下都不可互换,并且您不能使用由多个字符组成的单引号字符串。
答案 1 :(得分:12)
System.out.println('a'+'b'+'c');
> 294
System.out.println("a"+"b"+"c");
> abc
这里发生的是(char)+(char)=(int) 换一种说法。使用“”作为文本以避免意外。
答案 2 :(得分:9)
“”。是一个字符串,'。'是一个char。
答案 3 :(得分: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)),它最终会分配一个新的 char [] ,而 System.arraycopy 将首先分配旧内容。
之后AbstractStringBuilder.append(char)只需要将给定的char放在数组中,而AbstractStringBuilder.append(String)必须检查一些约束并调用String.getChars(int, int, char[], int)执行另一个 System.arraycopy 。
答案 4 :(得分:3)
“”。是一个只包含一个字符的字符串。 ''是一个角色。
将它们连接在一起后就没有区别了。
答案 5 :(得分:3)
''用于字符文字。
所以你不能这样做:
“Osc”+'ar'+“Reyes”
因为ar不是字符文字。
在你的例子中,它并没有太大的区别,因为
'/'
是一个字面值,
"/"
是一个只包含一个字符的字符串文字。
此外,您可以使用具有以下语法的任何UTF字符
'\u3c00'
所以你也可以使用:
"Osc" + '\u3c00' + "ar
答案 6 :(得分:2)
添加char比添加一个字符String快25%。然而,这通常无关紧要,例如
String s = "hello" + "/" + "world";
编译器将其转换为一个String,因此在任何情况下都不会在运行时发生字符串连接/追加。
答案 7 :(得分:1)
理论上,将字符串添加到字符串中更快 - Java 6似乎创建了StringBuffers,我记得在Java性能站点上读取连接字符串会更快。
答案 8 :(得分:1)
您可能会发现以下文章有用:
答案 9 :(得分:0)
char theLetterA ='A'; string myString =“a string”;
答案 10 :(得分:0)
如果您想添加更多字符,则只能在 '' 之间放置一个单个字符。
as string 是字符的集合,例如 strong text"hello world"
我们可以使用 '' like- 'h' 'e' 'l' 'l' 'o' ..... 并且每个都必须存储在不同的 char 变量中,这可能非常繁忙 因此,当您要存储多个字符时使用 "" 并使用 '' 来存储单个字符