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

时间:2014-07-03 11:03:10

标签: java variables constants code-readability

对于更安全和更清晰的代码,不变的常量值应为stored in constants rather than variables

后者并不适用于所有不可更改值的情况:在初始化使用相同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);
}

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

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

  1. 本地变量。
  2. 班级内的私人静态字段。
  3. 某些Properties类中的公共静态字段。
  4. 1 - 优点:变量只能在您的方法中看到 - 高代码安全性。 Disadvatages:变量被埋在一个方法中,很难找到和改变。

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

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

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

答案 2 :(得分:0)

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

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