创建了多少字符串对象 (String.format())?

How much string objects are created (String.format())?

与同事发生争执后,我们找不到解决办法。所以我的问题

for(int i = 0; i < 2; i++) {
    String.format("Variable i = %d", i);
}

这段代码 运行 期间将创建多少变量? 我有一个意见,这里可以创建4个变量:

  1. "Variable i = %d",
  2. "Variable i = %d" - 在两个循环步骤中都将创建一个用于格式化的对象
  3. "Variable i = 0",
  4. "Variable i = 1" - 结果字符串。

我说得对吗?

"Variable i = %d"是字符串字面量,所以会放到字符串池中,不会创建两次。因此,您将总共拥有三个字符串: "Variable i = %d""Variable i = 0""Variable i = 1"