为什么非静态最终成员变量不需要遵循常量命名约定?

时间:2016-07-26 05:10:17

标签: java netbeans naming-conventions constants naming

我使用的是NetBeans IDE,在Java之前,我是一名C ++程序员。从C ++开始,我学到的是常量变量名应该只包含大写字母。我认为大多数编程语言都认为常量变量应该只包含带下划线的大写字母来分隔单词。

当我尝试使用小写字母声明static成员变量时,我的IDE NetBeans仅向我发出警告。如果变量是final,则可以,但非静态。

final int mem1 = 90; // no warning
static final int mem2 = 90; // warning

程序员不应该强制使用大写字母来命名任何类型的(静态,非静态)常量变量吗?

2 个答案:

答案 0 :(得分:7)

final不会使值成为常量,它只是意味着该字段的值只能分配一次。

以下是非常数最终字段的示例:

public final class IntHolder {
  private final int value;

  public IntHolder(int value) {
    this.value = value;
  }

  public int get() {
    return value;
  }
}

此处,value字段对于IntHolder的每个实例明显不同,因此它不是常量。将该字段命名为常量只会导致混淆。

答案 1 :(得分:5)

只有常量应为大写。然而,它可能取决于程序员如何遵循惯例。有些人还喜欢使用'_'开始常量,后跟小写的名称。此外,没有必要在编译器中进行这样的检查,因为它可能取决于程序员的观点。