Java 类名中的有效字符

什么字符在 Java 类名中是有效的?还有哪些规则控制 Java 类名(例如,Java 类名不能以数字开头) ?

161964 次浏览

您可以拥有几乎任何字符,包括大多数 Unicode 字符。

标识符爪哇字母爪哇数字的无限长序列,其中第一个序列必须是 Java 字母..。

字母和数字可以从整个 Unicode字符中抽取,... ... 这允许程序员在他们的程序中使用标识符,这些标识符是用他们的母语编写的。

标识符的拼写(Unicode字符序列)不能与关键字(3.9)、布尔值文字(3.10.3)或空文字(3.10.7)相同,或者出现编译时错误。

但是,请参阅 这个问题了解是否应该这样做。

对于允许使用的名称类型,每种编程语言都有自己的一套规则和约定,Java 编程语言也不例外。命名变量的规则和约定可以总结如下:

  • 变量名是区分大小写的。变量的名称可以是任何合法的标识符ーー Unicode 字母和数字的无限长序列,以字母、美元符号“ $”或下划线字符“ _”开头。但是,惯例是始终以字母开头的变量名,而不是“ $”或“ _”。此外,按照惯例,美元符号字符根本不会被使用。您可能会发现某些情况下,自动生成的名称将包含美元符号,但是您的变量名应该始终避免使用它。下划线字符也有类似的约定; 虽然从技术上讲,变量名以“ _”开头是合法的,但是不鼓励这种做法。不允许留白。

  • 随后的字符可以是字母、数字、美元符号或下划线字符。约定(和常识)也适用于这条规则。为变量选择名称时,使用完整的单词而不是含糊不清的缩写。这样做将使您的代码更容易阅读和理解。在许多情况下,它也会让你的代码自我记录; 例如,名为韵律、速度和齿轮的字段比缩写版本(如 s、 c 和 g)更直观,同时记住,你选择的名称不能是关键字或保留字。

  • 如果您选择的名称只包含一个单词,请用所有小写字母拼写该单词。如果它由一个以上的单词组成,则将后面每个单词的第一个字母大写。gearRatio 和 currentGear 这两个名字就是这个约定的主要例子。如果您的变量存储一个常量值,比如 static final int NUM_GEARS = 6,则约定略有变化,将每个字母大写,并用下划线字符分隔后续单词。按照惯例,下划线字符从不在其他地方使用。

来自 官方的 Java 教程

我想补充一下 Bosonic 的回答,在 Java 中,任何有效的货币字符对于标识符都是合法的。Th something is 是一个法律标识符,和 this 一样。然而,我不知道如何编辑他或她的答案,所以我被迫发布这个微不足道的补充。

除了以前的答复之外,值得注意的是:

  1. Java 允许在符号名中使用任何 Unicode 货币符号,因此下面的代码都可以使用:

$var1 Var2 Something var3

我相信货币符号的使用起源于 C/C + + ,编译器通常以“ $”开头添加到代码中的变量。Java 中一个明显的例子是’的名称。内部类的 class’文件,按照惯例,内部类的格式为‘ Foreign $Inner.class’

  1. 许多 C # 和 C + + 程序员采用在接口前放置“ I”的惯例(也就是 C + + 中的纯虚类)。这在 Java 中不是必需的,因此也不需要执行,因为当某些东西是接口时,實现关键字使其非常清晰。

比较:

类别员工: public IPayable//C + +

类别雇员: 应缴税款//C #

还有

类 Employee 实现 Payable//Java

  1. 许多项目使用在字段名前面放置下划线的惯例,这样它们可以很容易地与局部变量和参数区分开来,例如。

私人双薪;

极少数在字段名称后面加下划线。

私人双薪 _;

正如 Jason Cohen 所说,Java 语言规范在3.8节中定义了什么是合法标识符:

”标识符是由 Java 字母和 Java 数字组成的无限长度序列 首先必须是一个 Java 字母。[ ... ]‘ Java 字母’是一个字符,其方法 Charter.isJavaIdentifierStart (int)返回 true。‘ Java 字母或数字’是一个字符,其方法 Charter.isJavaIdentifierPart (int)返回 true。”

This hopefully answers your second question. Regarding your first question; I've been taught both by teachers and (as far as I can remember) Java compilers that a Java class name should be an identifier that begins with a capital letter A-Z, but I can't find any reliable source on this. When trying it out with OpenJDK there are no warnings when beginning class names with lower-case letters or even a $-sign. When using a $-sign, you do have to escape it if you compile from a bash shell, however.

在 UpperCamelCase 中,类名应该是名词,每个单词的首字母大写。使用完整的单词ーー避免使用缩写词和缩写词(除非缩写词的使用范围比较广泛,比如 URL 或 HTML)。 这里可以看到命名约定:

Http://www.oracle.com/technetwork/java/codeconventions-135099.html

标识符用于类名、方法名和变量名。标识符可以是大小写字母、数字或下划线和美元符号字符的任何描述性序列。它们不能以数字开头,以免与数字字面混淆。同样,Java 是区分大小写的,所以 VALUE 比 VALUE 是一个区分符。 有效标识符的一些示例如下:

AvgTemp,count a4,$test,this _ is _ ok

无效的变量名包括:

2号,高温,不行

还有哪些规则控制 Java 类名(例如,Java 类名不能以数字开头) ?

  • Java 类名通常以大写字母开头。
  • Java 类名不能以数字开头。
  • 如果类名中有多个单词,比如“ MyClassName”,每个单词都应该以大写字母开头。“ MyClassName”。这个变数命名原则是基于 CamelCase型的。