如何知道将使用以下代码创建多少个对象?
对于Strings,我对于对象的情况有点困惑,所以想知道将使用以下代码创建多少个对象,并对String对象和堆创建String对象进行一些解释。
public static void main(String[] args) { String str1 = "String1"; String str2 = new String("String1"); String str3 = "String3"; String str4 = str2 + str3; }
将创建4个对象。
两个说明:
-
new String("something")
总是创建一个新对象。 字符串文字"something"
仅为所有出现创建一个对象。 最好的做法是永远不要使用new String("something")
– 实例化是多余的。 - 两个字符串的串联转换为
StringBuilder.append(first).append(second).toString()
,因此在此创建另一个对象。
str1,str2,str3,str4中的每一个都是String对象。
str1:“String1”是一个字符串文字,只要遇到字符串文字,Java就会创建一个String对象。
str2:当您使用String关键字和构造函数时,会创建一个String对象
str3:类似于str1
str4:连接字符串文字,类似于str1
编辑: http : //download.oracle.com/javase/tutorial/java/data/strings.html