如果Java只在一个地方使用,它应该是一个定义为常量的字符串

如果Java只在一个地方使用,它应该是一个定义为常量的字符串,java,spring-ioc,Java,Spring Ioc,我有一个方法,它使用一个字符串常量,如下所示,并且该值不再使用 @Service public class Sample { public void test(Greet greet) { greet.setInitial("Hi"); } } 初始值永不改变,示例类是一个单例bean 我的问题是,我们是否应该声明一个常数,如下所示: @Service public class Sample { private static final String I

我有一个方法,它使用一个字符串常量,如下所示,并且该值不再使用

@Service
public class Sample {
    public void test(Greet greet) {
        greet.setInitial("Hi");
    }
}
初始值永不改变,示例类是一个单例bean

我的问题是,我们是否应该声明一个常数,如下所示:

@Service
public class Sample {
    private static final String INITIAL="Hi";

    public void test(Greet greet) {
        greet.setInitial(INITIAL)
    }
}

从性能角度看,哪种方法更好取决于具体情况。在本例中,我可能会使用字符串literal
greet.setInitial(“Hi”)而不是常量。但这实际上取决于您希望如何处理或组织此值,例如,如果您将变量视为常量:

@Service
public class Sample {

    public final int DEFAULT_GREETING = "Hi";

    public void test(Greet greet) {
        greet.setInitial(DEFAULT_GREETING);
    }
}
然后,您可以将该值组织在类的顶部,不管它在类中的何处使用,也不管它是一次使用还是多次使用,并且如果需要,您可以为外部类提供对常量的访问


这实际上是为了传达您价值的含义/用途/范围

没有性能差异。哪种方式能让你的代码更容易被读者理解@AndyTurner更新了代码“从性能角度看哪种方法更好”——性能是JIT的工作。不要试图胜过它。我很有信心,这两种方法的性能非常相似。旁白:这与春季国际奥委会有什么关系?