这个定义有意义吗?
private static final String string = "Constant string";
我是初学者,我不明白最终和静态之间的区别......
答案 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)
这是一个老问题,但我会在这里为发现这篇文章的人(像我一样)添加信息。)
是的,类成员是静态的还是最终的,但如果变量在方法中被声明为静态(编译时错误启动),则无意义。