例如:
String str1 = “abc”;
String str2 = new String(“def”);
然后,
案例1 :String str3 = str1.concat(str2)
会进入堆还是池?
案例2 :String str4 = str2.concat(“HI”)
会进入堆还是池?
答案 0 :(得分:0)
在java中,使用new关键字创建的String将在堆内存中创建。如果在不使用new的情况下创建任何String,它将在String池中创建,它将被称为String Constant。只有一个String常量池值的副本,这意味着在String池中不会有重复项。
答案 1 :(得分:0)
在第一个语法(String str1 = "abc";)
中,只创建一个String对象,并指向一个引用变量。该对象在JVM维护的String常量池中创建。
在第二种情况String str2 = new String("def");
中,创建了两个String对象。由于调用new,因此在普通内存中创建一个String对象。另外,字符串常量" newstring"将被放置在String常量池中。
因此,当我们没有New Keyword时,我们只在String常量池中创建一个String对象。