当前位置: 首页 > 面试题库 >

静态最终变量的Java命名约定

郎鸿雪
2023-03-14
问题内容

有一条规则说:

代表常量(最终变量)的名称必须全部使用大写字母,并使用下划线分隔单词(摘自http://geosoft.no/development/javastyle.html

对于基本类型(例如int或字符串)可以很好地工作:

private static final int MAX_COUNT = 10;

但是非原始类型呢?在大多数情况下,我已经看到以下内容:

private static final Logger log = Logger.getLogger(MyClass.class);

或单例,实例变量不是大写的。

问题是声明这些类型的变量(如日志和实例)的正确方法是什么?


问题答案:

那仍然是一个 常数。有关常量命名约定的更多信息,请参见JLS。但实际上,这全都是偏好问题。

接口类型中常量的名称应该是,而final
类类型的变量通常可以是一个或多个单词,首字母缩写词或缩写的序列,全部为大写,且各组成部分之间用下划线"_"字符分隔。常数名称应为描述性名称,而不必缩写。按照惯例,它们可以是任何适当的语言部分。常量名的例子包括MIN_VALUEMAX_VALUEMIN_RADIX,和MAX_RADIX之类的Character

有时用有用的通用缩写词作为名称前缀来有用地指定一组常量,这些常量代表集合的替代值,或者较少出现的整数值中的掩蔽位,例如:

interface ProcessStates {
  int PS_RUNNING = 0;
  int PS_SUSPENDED = 1;
}

涉及常量名称的混淆很少见:

  • 常量名称通常没有小写字母,因此它们通常不会混淆包或类型的名称,也不会遮蔽通常包含至少一个小写字母的字段的阴影。
  • 常量名称不能掩盖方法名称,因为它们在语法上是区分的。



 类似资料:
  • 问题内容: 将变量声明为的区别是什么 要么 如果我只希望变量是局部的,并且是常量(以后不能更改)? 谢谢 问题答案: 仅仅具有预期的效果。 声明static使其成为一个类变量,使其可以使用类名进行访问

  • 问题内容: 通常,最终静态成员,尤其是变量(或静态最终变量,当然可以以任何顺序使用,而不会重叠含义)已广泛用于Java接口中,以定义实现类的 协议行为 ,这意味着实现该类的类(继承)接口必须包含该接口的所有成员。 我无法区分 final 和 final静态 成员。final静态成员是一个声明为final或其他东西的静态成员?在哪些特定情况下应专门使用它们? 永远不能在方法内部,静态方法内部或实例方

  • 问题内容: 在Java中,何时应使用静态非最终变量? 例如 显然,这里我们不是在谈论常量。 根据我的经验,我经常在使用单例时对它们进行辩护,但后来我最终需要拥有多个实例,这使我感到非常头痛和重构。 似乎很少在实践中使用它们。你怎么看? 问题答案: 统计信息收集可以使用非最终变量,例如,计算创建的实例数。另一方面,对于这种情况,您可能还是要使用etc,这时可能是最终的。另外,如果您要收集多个统计信息

  • 问题内容: Java常数变量有任何命名约定吗? 通常,我们使用名称包含大写字母和下划线()的变量。 例如: 问题答案: 是。这就对了。它也经常用于。 唯一常见的例外是记录您可能会看到的位置 但是我更喜欢 我通常将其写为UPPER_CASE,但我也为类编写TitleCase,为变量和方法编写camelCase。

  • 问题内容: 在PHP中,我们(至少是优秀的程序员)总是以小写字母开头的通用变量名称,而以大写字母开头的类变量/对象则区分它们。以相同的方式,我们以小写字母开头的通用文件名,但是包含具有大写字母的类的文件。 例如: Java中的约定是否相同,即对象以大写字母开头,其余对象以小写字母开头?还是像我在其他地方读过的所有内容都以小写字母开头? 问题答案: 通常,所有变量都以小写字母开头: 有些人喜欢在所有

  • 问题内容: 给定下面的Java代码,您可以在Ruby类中最接近地表示这两个变量吗?而且,在Ruby中是否可以像Java中那样区分和变量? 问题答案: Ruby中确实没有等效的构造。 但是,您似乎犯了一个经典的移植错误:您有一种使用语言A 的 解决方案 ,然后尝试将其翻译为语言B,这时您真正应该做的就是找出 问题 ,然后找出解决方法使用语言B。 我不能完全确定您要从那个小的代码段中解决什么问题,但是