Java 类名中哪些字符有效?还有哪些其他规则管理 Java 类名称(例如,Java 类名称不能以数字开头)?

有帮助吗?

解决方案

您几乎可以使用任何字符,包括大多数 Unicode 字符!确切的定义在 Java 语言规范第 3.8 节:身份标识.

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

字母和数字可以从整个 Unicode 字符集中提取,...这允许程序员在用其母语编写的程序中使用标识符。

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

不过,请参阅 这个问题 你是否应该这样做。

其他提示

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

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

  • 后续字符可以是字母、数字、美元符号或下划线字符。惯例(和常识)也适用于该规则。为变量选择名称时,请使用完整的单词而不是晦涩的缩写。这样做将使您的代码更易于阅读和理解。在许多情况下,它还会使您的代码自我记录;例如,名为 cadence、speed 和 gear 的字段比缩写版本(例如 s、c 和 g)直观得多。另请记住,您选择的名称不得是关键字或保留字。

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

官方Java教程.

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

  1. Java 允许在符号名称中使用任何 Unicode 货币符号,因此以下内容都可以工作:

$ var1£var2€var3

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

  1. 许多 C# 和 C++ 程序员采用将“I”放在接口(C++ 中的纯虚拟类)前面的约定。在 Java 中这不是必需的,因此也不会这样做,因为 Implements 关键字可以非常清楚地表明某个东西是接口。

比较:

员工类别:公共IPayable //C++

员工类别:支付宝 //C#

类 Employee 实现 Payable //Java

  1. 许多项目使用在字段名称前面放置下划线的约定,以便可以轻松地将它们与局部变量和参数区分开来,例如

私人双薪;

极少数人在字段名称后面放置下划线,例如

私人双薪_;

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

“标识符是Java字母和Java数字的无限长度序列,其中第一个必须是Java字母。[...]“Java 字母”是方法 Character.isJavaIdentifierStart(int) 返回 true 的字符。“Java 字母或数字”是方法 Character.isJavaIdentifierPart(int) 返回 true 的字符。”

这有望回答您的第二个问题。关于你的第一个问题;老师和(据我记得)Java 编译器都教导我,Java 类名应该是一个以大写字母 A-Z 开头的标识符,但我找不到任何可靠的来源。当使用 OpenJDK 进行尝试时,当类名以小写字母甚至 $ 符号开头时,不会出现任何警告。但是,当使用 $ 符号时,如果从 bash shell 进行编译,则必须对其进行转义。

我想在 bosnic 的答案中补充一点,任何有效的货币字符对于 Java 中的标识符都是合法的。th€is 是合法标识符,€this 和 € 也是如此。然而,我不知道如何编辑他或她的答案,所以我被迫发布这个琐碎的补充。

还有哪些其他规则管理 Java 类名称(例如,Java 类名称不能以数字开头)?

  • Java 类名通常以大写字母开头。
  • Java 类名不能以数字开头。
  • 如果类名中有多个单词(例如“MyClassName”),每个单词都应以大写字母开头。例如-“MyClassName”。此命名约定基于 骆驼香烟盒 类型。

类名应该是大驼峰式命名的名词,每个单词的第一个字母大写。使用整个单词 — 避免使用首字母缩写词和缩写词(除非缩写词比长形式使用更广泛,例如 URL 或 HTML)。命名约定可以在这里阅读:

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

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

AvgTemp ,计数 a4 ,$test ,this_is_ok

无效的变量名称包括:

2count,高温,不/正常

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top