繁体   English   中英

Java方法中的字符串常量与变量

[英]String constant vs variable in a Java method

对于更安全和更清晰的代码,不可更改的常量值应存储在常量而不是变量中。

后者并不适用于所有不可更改值的情况:在初始化使用相同String值两次的应用程序时,只有一次调用以下方法。 String仅在方法内引用和使用。

我的问题是:变量/常量定义的最佳方法是什么? 作为大型应用程序中的简单字符串,性能和内存可以忽略不计,更多的是可读性和维护性。

它是否在方法内变量:

protected void init() {
    final String thestring = "thevalue";

    methodA(thestring);
    methodB(thestring);
}

或者它是否在类级别上是常量(尽管仅在方法中使用):

private static final String THESTRING = "thevalue";

protected void init() {

    methodA(THESTRING);
    methodB(THESTRING);
}

还是第三个更好的解决方案? 还请考虑在同一类中可以有更多类似的方法。

对我来说,最好的解决方案是在方法中使用变量 - 因为它是内部变量。 所以其他方法不应该看到它。 考虑封装和清理代码,当您尝试在类级别上移动此变量时,您将获得一长串的类变量。

另一件事是记忆。 执行方法后,变量将被销毁。 当您将其定义为静态时,它将一直存在于您的内存中。

我可以想到三个地方放置你的变量(所有最终的ofc),每个都有它的优点和缺点。

  1. 局部变量。
  2. 您班级内的私人静态字段。
  3. 某些Properties类中的公共静态字段。

1 - 优点:变量只能在您的方法中看到 - 高代码安全性。 Disadvatages:变量被埋在一个方法里面,很难找到和改变。

(我将跳过2,因为它只是在1和3之间妥协)

3 - 优点:您的字段是其他可配置字段之一,可以轻松更改您的设置。 缺点:字段是公共的,每个人都可以看到它(但String不可变的,所以没有人能够改变它)。

总结:取决于您期望改变变量所需的程度(例如平衡,换色等)。 如果你确定这个字符串值是正确的,我不会害怕把它放到局部变量中。

通常,常量不是特定于实例的。 因此,将常量存储为静态变量而不是成员变量是更好的做法。 优点是:

  • 变量只有一个分配,而不是每个对象分配一个。
  • 您不需要创建实例变量来访问常量,例如,在Java Math类中声明PI是静态的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM