什么是两者之间的区别?
String str = new String("abc");
并且String str = "abc";
什么是两者之间的区别?
String str = new String("abc");
并且String str = "abc";
String s1 = "Hello";
String s2 = "Hello";
String s3 = new String("Hello");
System.out.println(s1 == s2); //true
System.out.println(s1.equals(s2)); //true
System.out.println(s1 == s3); //false
System.out.println(s1.equals(s3)); //true
s3 = s3.intern();
System.out.println(s1 == s3); //true
System.out.println(s1.equals(s3)); //true
intern()
时,引用会发生更改。String对象和字符串字面值之间存在微妙的差异。
String s = "abc"; // creates one String object and one reference variable
String s = new String("abc"); // creates two objects,and one reference variable
new
关键字,Java会在正常(非池)内存中创建一个新的String对象,并且s将引用它。此外,文字“abc”将被放置在池中。String s = new String("FFFF")
创建了两个对象:"FFFF"
字符串和指向 "FFFF"
字符串的 String
对象,所以它就像指针对指针(引用对引用,我对术语不太熟悉)。
据说您不应该使用 new String("FFFF")
所有字符串字面量都会自动实例化为一个字符串对象。
。考试似乎认为这总是正确的,即使字面量被内部化到已经存在的对象中? - djangofan