final static vs static final变量

Dav*_*ica 4 java static final

我有以下编译代码:

final static String test = "A";
static final String test2 = "B";
Run Code Online (Sandbox Code Playgroud)

一切都很好.我的问题是,这两者有什么区别?

Den*_*ret 12

这些修饰符的顺序不是强制性的,如Java规范中所述:

FieldModifiers:FieldModifier FieldModifiers FieldModifier

FieldModifier:Annotation公共保护私有静态最终瞬态volatile之一

但请注意Java规范引入了最佳实践:

如果两个或多个(不同的)字段修饰符出现在字段声明中,则通常(尽管不是必需的)它们按照与上面在FieldModifier的制作中显示的顺序一致的顺序出现.

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

static final String test2 = "B";
Run Code Online (Sandbox Code Playgroud)

大多数编码人员都尊重这种"习惯"这一事实意味着他们的编码人员可以更快,更轻松地解析和阅读代码.