最终静态和静态最终之间的差异

问题

我找到了一个声明代码的代码

private final static String API_RTN_SUCCESS = "0";
private final static String API_RTN_ERROR = "1";

public static final String SHARED_PREFERENCE_CONFIG = "shared_preference_config";
public static final String STARTUP_SETTING_KEY = "startup_setting";

它们之间有什么区别或它们是一样的?或者它对于2718158100或public有所不同吗?


#1 热门回答(164 赞)

没有任何区别。根据8.3.1 - Classes - Field Modifiers of the Java Language Specification

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

对于字段,所述生产按此顺序列出修饰符:

@Annotation public protected private static final transient volatile

对于方法:

@Annotation public protected private abstract static final synchronized nativefret


#2 热门回答(31 赞)

他们是一样的。修饰符的顺序并不重要。请注意,相同的规则适用于在Java中使用修饰符的所有内容。

但是,大多数Java样式指南建议/强制使用修饰符的相同特定顺序。在这种情况下,它是public static final


#3 热门回答(18 赞)

private static final String API_RTN_ERROR= "1";
private final static String API_RTN_ERROR= "1";
static private final String API_RTN_ERROR= "1";
static final private String API_RTN_ERROR= "1";
final static private String API_RTN_ERROR= "1";
final private static String API_RTN_ERROR= "1";

即使以上都是相同的,前三个的位置是可互换的。