你几乎可以拥有任何字符,包括大多数Unicode字符! 确切的定义在Java语言规范的第3.8节中 。
不过,看看这个问题是否应该这样做。
每种编程语言都有自己的一套规则和约定,以允许你使用的名称types,而Java编程语言也不例外。 命名variables的规则和约定可以总结如下:
variables名称区分大小写。 variables的名称可以是任何合法的标识符 – 以字母,美元符号“$”或下划线字符“_”开头的无限长的Unicode字母和数字序列。 但是,惯例是总是用一个字母开始variables名,而不是“$”或“_”。 此外,按照惯例,美元符号字符根本不会被使用。 您可能会发现一些自动生成的名称将包含美元符号的情况,但您的variables名称应始终避免使用它。 下划线字符存在类似的约定; 虽然从技术angular度来讲合法的是用“_”开始variables的名字,但这种做法是不鼓励的。 空格是不允许的。
后续字符可能是字母,数字,美元符号或下划线字符。 公约(和常识)也适用于这条规则。 为variablesselect名称时,请使用完整的单词而不是隐含的缩写。 这样做会使您的代码更易于阅读和理解。 在很多情况下,它也会使你的代码自动logging。 例如,名为节奏,速度和齿轮的字段比缩写版本更直观,例如s,c和g。 另外请记住,您select的名称不能是关键字或保留字。
如果您select的名称只包含一个单词,则拼写该单词的所有小写字母。 如果它包含多个单词,则将每个后续单词的首字母大写。 gearRatio和currentGear是这个约定的主要例子。 如果你的variables存储了一个常数值,比如static final int NUM_GEARS = 6 ,那么约定稍有变化,大写每个字母并用下划线分隔后续的单词。 按照惯例,下划线字符从来不会在其他地方使用。
从官方的Java教程
除了之前的回答,值得注意的是:
Java允许在符号名称中使用任何Unicode货币符号,所以以下内容将全部起作用:
$ var1£var2€var3
我相信货币符号的使用来源于C / C ++,编译器通常以'$'开头的variables添加到您的代码中。 Java中的一个明显的例子是内部类的'.class'文件的名称,按照惯例,其格式为'Outer $ Inner.class'
许多C#和C ++程序员采用将“I”放置在接口(即C ++中的纯虚拟类)之前的惯例。 在Java中这不是必需的,因此不能这样做,因为implements关键字使得它非常清楚什么是接口。
比较:
类Employee:public IPayable // C ++
同
class Employee:IPayable // C#
和
类Employee实现Payable // Java
许多项目使用在字段名称前加下划线的约定,以便它们可以很容易地从局部variables和参数中区分出来,例如
私人双人沙发
例如,一个极less数将下划线放在字段名称后面
私人双重工资_;
正如Jason Cohen所述,Java语言规范定义了3.8节中的合法标识符:
“一个标识符是Java字母和Java数字的无限长序列,其中第一个必须是Java字母。[…]”Java字母“是Character.isJavaIdentifierStart(int)返回的字符true。“Java字母或数字”是Character.isJavaIdentifierPart(int)方法返回true的字符。
这有希望回答你的第二个问题。 关于你的第一个问题, 我已经被老师和(据我记得的)Java编译器教过,Java类名应该是一个以大写字母AZ开头的标识符,但我找不到任何可靠的来源。 使用OpenJDK进行尝试时,在使用小写字母或甚至$ -sign开始类名时,不会有任何警告。 当使用$ -sign时,如果你从bash shell编译,你必须转义它。
我想添加bosnic的答案,任何有效的货币字符在Java中的标识符是合法的。 这是一个合法的标识符,这个也是€,也是€。 但是,我不知道如何编辑他或她的答案,所以我不得不发布这个微不足道的补充。
还有哪些规则pipe理Java类名(例如,Java类名不能以数字开头)?
Java类名通常以大写字母开头。
Java类名不能以数字开头。
如果类名称中有多个单词,如“MyClassName”,则每个单词应该以大写字母开头。 例如“MyClassName”。该命名约定基于CamelCasetypes。
类名应该是UpperCamelCase中的名词,每个单词的首字母大写。 使用整个单词 – 避免首字母缩略词和缩写(除非缩写比长表单更广泛,比如URL或HTML)。 命名约定可以在这里阅读:
标识符用于类名称,方法名称和variables名称。 一个标识符可以是大写和小写字母,数字,或者数字和美元符号字符的任何描述性序列。 他们不能以数字开头,否则会被数字文字灌输。 Java又是区分大小写的,所以VALUE是一个与Value不同的标识符。 有效的标识符的一些例子是:
AvgTemp,计数a4,$ test,this_is_ok
无效的variables名称包括:
2count,高温,不行