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

Gur*_*lki 3 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;

    }
Run Code Online (Sandbox Code Playgroud)

Boz*_*zho 12

将创建4个对象.

两个笔记:

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

  • 在这种情况下,第二点是正确的,但如果参数是编译时常量,则会变得更加困难.例如,我相信`String str1 ="foobar"; String str2 ="foo"+"bar";`只有一个实例. (5认同)