如果从方法返回值,字符串池是否有效?

Yur*_*hok 1 java string-pool

我对Java的字符串池有一些了解。网络中的所有示例都明确地创建了变量。但是,如果我从方法返回硬编码的字符串,将会发生什么。是使用字符串池还是为每个方法调用一次又一次创建字符串。我找不到有关此案的任何信息。

我有这样的例子:

public class TestService {

  @Override
  protected Optional<String> getPayTypeCode() {
      return Optional.of("LDV");
  }
  //...
}
Run Code Online (Sandbox Code Playgroud)

常量示例:

public class TestService {
  private static final String PAY_CODE = "LDV";

  @Override
  protected Optional<String> getPayTypeCode() {
      return Optional.of(PAY_CODE);
  }
  //...
}
Run Code Online (Sandbox Code Playgroud)

我想知道,我的第一种情况是使用字符串池吗?哪种情况会更快?

Joa*_*uer 5

字符串池将用于所有字符串文字,无论在方法主体中使用它还是初始化静态的final字段都没有关系。这两个都将使用字符串池(并返回内联的字符串对象)。