174

我找到了一个代码,它声明了类似的代码

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";

它们之间有什么区别还是相同?或者它对 or 有什么private不同public

4

8 回答 8

252

完全没有区别。根据 Java 语言规范的 8.3.1 - Classes - Field Modifiers

如果两个或多个(不同的)字段修饰符出现在字段声明中,尽管不是必需的,但习惯上它们的出现顺序与上面在 FieldModifier 的产生式中显示的顺序一致。

对于字段,上述产生式按以下顺序列出修饰符:

@Annotation public protected private static final transient volatile

对于方法:

@Annotation public protected private abstract static final synchronized native strictfp

于 2012-06-27T04:49:42.017 回答
50

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

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

于 2012-06-27T04:50:34.733 回答
20
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";

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

于 2012-06-27T05:31:17.147 回答
9

他们是一样的,

private final static String API_RTN_ERROR = "1";

private static final String API_RTN_ERROR= "1";
于 2012-06-27T04:46:46.247 回答
4

它们之间有什么区别还是相同?

如果您正在谈论更改静态和最终的顺序,那么是的,它们是相同的。

私人或公共有区别吗?

不,您可以在私人和公共场合使用任何订单。只是不同的是私有变量不能直接在类之外访问。

于 2012-06-27T04:54:34.450 回答
3

逻辑上没有区别,也没有技术影响。

唯一的问题是,如果您按此顺序使用,sonarqube 将报告 Code Smell

private final static <Type> <variable_name> = <value>;

因此建议使用:

private static final <Type> <variable_name> = <value>;

Java 语言规范建议按以下顺序列出修饰符:

  1. 注释
  2. 上市
  3. 受保护
  4. 私人的
  5. 抽象的
  6. 静止的
  7. 最终的
  8. 短暂的
  9. 易挥发的
  10. 同步的
  11. 本国的
  12. 严格的fp

注意遵循这个约定没有技术影响,但会降低代码的可读性,因为大多数开发人员都习惯了标准顺序。

于 2021-09-14T04:36:44.957 回答
1

这只是人们为了保持编码风格一致而遵循的惯例或做法。它提高了可读性。所以首选的写作方式是

private static final <Type> <variable_name> = <value>;
于 2020-05-14T07:08:38.480 回答
0

当然是一样的。这仅取决于您的习惯和偏好:-)。我也对成员和方法使用公共静态最终顺序

于 2018-04-19T07:52:58.050 回答