字符串对象和字符串文本之间的区别

2022-08-31 05:32:42

两者之间有什么区别

String str = new String("abc");

String str = "abc";

答案 1

使用字符串文本时,可以暂存该字符串,但在使用时,您将获得一个新的字符串对象。new String("...")

在此示例中,两个字符串文本引用同一对象:

String a = "abc"; 
String b = "abc";
System.out.println(a == b);  // true

这里,创建了2个不同的对象,它们有不同的引用:

String c = new String("abc");
String d = new String("abc");
System.out.println(c == d);  // false

通常,应尽可能使用字符串文本表示法。它更易于阅读,它使编译器有机会优化代码。


答案 2

字符串文本是 Java 语言的概念。这是一个字符串文本:

"a String literal"

String 对象是类的单个实例。java.lang.String

String s1 = "abcde";
String s2 = new String("abcde");
String s3 = "abcde";

所有这些都是有效的,但有细微的差异。 将引用一个滞留的字符串对象。这意味着,字符序列将存储在一个中心位置,并且每当再次使用相同的文本时,JVM 将不会创建新的 String 对象,而是使用缓存的 String 的引用。s1"abcde""abcde"

s2被保证为一个新的 String 对象,因此在本例中,我们有:

s1 == s2 // is false
s1 == s3 // is true
s1.equals(s2) // is true