final static与static final变量的区别

4
我有以下编译代码:

我有以下编译代码:

final static String test = "A";
static final String test2 = "B";

一切都可以正常编译。我的问题是,这两者之间有什么区别?


它们完全相同。请参见https://dev59.com/PGgu5IYBdhLWcg3wloAO - Bathsheba
简而言之,它们可以以任意顺序使用,在技术上没有区别,正如其他几个答案和指定链接所述。 - Lion
根据JLS,静态常量(static final)是首选! - Gaurav
2个回答

12

Java规范中提到,这些修饰符的顺序并非强制的

字段修饰符: 字段修饰符 字段修饰符 字段修饰符

字段修饰符:其中之一 注解 public protected private static final transient volatile

但请注意,Java规范为最佳实践指出:

如果一个字段声明中有两个或更多(不同的)字段修饰符,则惯例上,它们应按照FieldModifier生产中所示的顺序出现,尽管这不是必需的。

这意味着最正确的解决方案是

static final String test2 = "B";

事实上,大多数程序员都尊重这种“习惯”,这意味着他们的同行可以更快地解析和阅读代码,并更容易理解。


2

没有区别。你放置关键字的顺序并不重要。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接