在Java中定义静态最终变量是否有意义?

时间:2011-03-02 14:01:03

标签: java

这个定义有意义吗?

private static final String string = "Constant string";

我是初学者,我不明白最终和静态之间的区别......

4 个答案:

答案 0 :(得分:19)

这是有道理的,是的。这就是Java中定义常量的方法。

  • final表示无法重新分配变量 - 即这是唯一可以拥有的值
  • static表示可以从类的每个实例访问相同的值(这也意味着即使没有声明它的类的实例也可以访问它)。

private这里表示只有当前类(所有实例及其静态方法)才能访问此常量。)

答案 1 :(得分:4)

是的,这是有意义的 - 这就是常量通常用Java定义的方式。

final表示您无法将变量更改为其他字符串。

static表示只有一个引用副本,在该类的不同对象之间共享。 (reference)

普通代码约定是constants are named in uppercase with underscores between words,所以我想说:

private static final String CONSTANT_STRING = "Constant string";

更常见。

答案 2 :(得分:2)

最终意味着值不能改变(它是“const”),而静态意味着它是类本身的属性,而不是类的实例。所以是的,这种定义是有道理的,而且确实很常见。像这样的最终常量也往往是静态的,因为将它们作为实例属性并没有什么意义,因为它们无法改变。

答案 3 :(得分:0)

这是一个老问题,但我会在这里为发现这篇文章的人(像我一样)添加信息。)

是的,类成员是静态的还是最终的,但如果变量在方法中被声明为静态(编译时错误启动),则无意义。