我试图找到在下面的代码中创建的String对象的数量。
我认为它是4因为String
是不可变的,所以prod()方法中的前两行中的每一行都将创建一个对象,第三行将创建2个对象。因此将创建总共4个对象。有人可以澄清一下吗?
public class Solution {
public void prod() {
String str="Sku";
str=str+"001";
String skuId= str.substring(3,6);
System.out.println(skuId.toString());
}
public static void main(String[] args) {
new Solution().prod();
}
}
答案 0 :(得分:1)
我认为是4.在我的解释之下。
public class Solution {
public void prod() {
String str = "Sku"; // first
str = str + "001"; // second when create "001" and third when concat strings
String skuId = str.substring(3, 6); //fourth
System.out.println(skuId.toString()); //method toString don't create new string
}
public static void main(String[] args) {
new Solution().prod();
}
}
str + "001"
operations str.substring(3, 6)
的结果。 Substring方法返回new String()答案 1 :(得分:0)
在Java 7中,第一次运行代码时,将加载字符串文字,使其成为4,但之后prod()
方法只会创建2个String
个对象。
在Java 7之前,在加载类时加载了字符串文字,因此该方法只会添加两个字符串。
这当然会在每个String中省略char[]
,这是另一个对象。
例如,要加载Solution
类,它首先使用"Solution"
字符串查找类名。