该程序将创建多少个字符串对象

时间:2015-10-11 02:38:01

标签: java

以下是Java程序。

 public String makinStrings() {
 String s = “Fred”;
 s = s + “47”;
 s = s.substring(2, 5);
 s = s.toUpperCase();
 return s.toString();
 }

如何找出在String池中创建了多少String对象。我认为创建了4个对象 - “Fred”,“Fred47”,“ed4”,“ED4”。这是正确的假设吗?

1 个答案:

答案 0 :(得分:1)

对于Java版本7:

  • 由于this topic + 运算符创建新对象
  • 由于String referencethis topic
    • substring()创建一个新字符串,因为String是不可变的
    • toUpperCase()创建一个新字符串,因为String是不可变的
    • toString()不会创建新字符串但会自行返回

在开头分配“Fred”不会创建新对象,因为它将从literal pool

获取

总结 - 每次调用方法都会创建3个字符串。字符串是一个对象,因此返回它不会创建新的 - 它是通过引用完成的。