一尘不染

将创建多少个String对象

java

我有以下Java代码:

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

问题很简单:String调用此方法将创建多少个对象?

一开始我回答说创建了5个String对象,但是我的书回答说只有3个对象被创建,没有给出解释(这是一个SCJP问题)。

从我的角度来看,有5个对象:“ Fred”,“ 47”,“ Fred47”,“ ed4”,“ ED4”。

我也在SCJP模拟考试中找到了这个问题,答案是3。


阅读 172

收藏
2020-09-08

共1个答案

一尘不染

“ Fred”和“ 47”将来自字符串文字池。因此,在调用该方法时 将不会
创建它们。而是在加载类时将它们放到那里(或更早,如果其他类使用具有相同值的常量)。

“ Fred47”,“ ed4”和“ ED4”是String将在每次方法调用时创建的3个对象。

2020-09-08