Java 字符串池在从方法返回值的情况下有效吗?

Java 字符串池在从方法返回值的情况下有效吗?,java,string-pool,Java,String Pool,我对Java中的字符串池有一些了解。网络中的所有示例都与显式创建变量有关。但若我从方法返回硬编码字符串,会发生什么呢。是使用字符串池还是字符串将为每个方法调用一次又一次地创建。我找不到关于这个案子的任何信息 我有这样的例子: public class TestService { @Override protected Optional<String> getPayTypeCode() { return Optional.of("LDV"); } //..

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

我有这样的例子:

public class TestService {

  @Override
  protected Optional<String> getPayTypeCode() {
      return Optional.of("LDV");
  }
  //...
}
带有常数的示例:

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

  @Override
  protected Optional<String> getPayTypeCode() {
      return Optional.of(PAY_CODE);
  }
  //...
}

我想知道,我的第一个案例是使用字符串池吗?哪种情况工作得更快?

字符串池将用于所有字符串文本,无论是在方法体中使用还是初始化静态最终字段。这两种方法都将使用字符串池并返回插入的字符串对象

字符串池将用于所有字符串文本,无论是在方法体中使用还是初始化静态final字段。这两种方法都将使用字符串池并返回插入的字符串对象

两者可能存在相同的重复w.r.t.特征。使用私有静态最终可选支付范围=Optional.ofLOV;会更好一点-缺点是全局对象需要初始化时间和空间。两者的可能重复都是相同的w.r.t.特性。使用私有静态最终可选支付范围=Optional.ofLOV;会更好一点-缺点是全局对象需要初始化时间和空间。如果在类中只使用一次,则最好使用私有常量?从纯技术角度看,几乎没有什么区别。这更多的是一个关于代码风格和可读性的问题,人们的看法也不尽相同。如果它只在一个地方使用,并且这个值有些不言自明,那么我不会定义一个常量。如果特定值的原因不明显,那么我会定义一个常量,即使它只在一个地方使用。如果它在课堂上只使用一次,是否最好使用私有常量?从纯技术的角度来看,这几乎没有什么区别。这更多的是一个关于代码风格和可读性的问题,人们的看法也不尽相同。如果它只在一个地方使用,并且这个值有些不言自明,那么我不会定义一个常量。如果这个特定值的原因不明显,那么我会定义一个常量,即使它只在一个地方使用。