如何知道将使用以下代码创建多少个对象?

时间:2010-10-03 18:04:23

标签: java

对于Strings,我对于对象的情况有点困惑,所以想知道将使用以下代码创建多少个对象,并对String对象和堆创建String对象进行一些解释。

 public static void main(String[] args) {

    String str1 = "String1";

    String str2 = new String("String1");

    String str3 = "String3";

    String str4 = str2 + str3;

    }

2 个答案:

答案 0 :(得分:13)

将创建4个对象。

两个注释:

  • new String("something")始终会创建一个新对象。字符串文字"something"仅为所有匹配项创建一个对象。最佳做法是永远不要使用new String("something") - 实例化是多余的。
  • 两个字符串的串联转换为StringBuilder.append(first).append(second).toString(),因此在此创建另一个对象。

答案 1 :(得分:1)

str1,str2,str3,str4中的每一个都是String对象。

str1:“String1”是一个字符串文字,只要遇到字符串文字,Java就会创建一个String对象。

str2:当您使用String类的new关键字和构造函数时,会创建一个String对象

str3:类似于str1

str4:连接字符串文字,类似于str1

编辑:http://download.oracle.com/javase/tutorial/java/data/strings.html