Java - 标识符

来源:互联网 发布:网络教育会计要考什么 编辑:程序博客网 时间:2024/04/28 03:15

Java 标识符的定义规则:

1.      标识符的首字符所对应的代码点必须使得Character类的isJavaIdentifierStart方法返回值为true,后续字符所对应的代码点必须使得Character类的isJavaIdentifierPart返回值为true。(随着JDK版本的增加符合的字符数目也不断增加着)

2.      标识符不能与Java关键字相同。

3.      标识符不能与Java中预定义的字面常量名称相同(true, false, null)。

4.      标识符的长度必须在系统所支持的范围内(这点是Java虚拟机所要求的)。

 

public static void main(String args[]) {int start = 0;int part = 0;for (int i = 0x0000; i <= 0x10ffff; i++) {if (Character.isJavaIdentifierStart(i))start++;if (Character.isJavaIdentifierPart(i))part++;}System.out.println("Unicode字符集个数:" + (0x10ffff+1));System.out.println("可作为标识符首字符的字符个数:" + start);System.out.println("可作为标识符一部分的字符个数:" + part);System.out.println("二者之差:" + (part - start));}
输出

Unicode字符集个数:1114112
可作为标识符首字符的字符个数:101296
可作为标识符一部分的字符个数:103584
二者之差:2288

注意

1.      由上规则可以看出不符合标识符首字符规则的不仅是0-9十个数字。

2.      尽量避免$作为标识符的使用,因为$通常在编译器生成的标识符名称中使用,可能会起到冲突。因为$在源文件(.java)编译成字节码(.class)后会成为顶层类型与嵌套类型之间的连接符。例如:如果存在一个顶层类A,在其内声明一个类B,那么编译之后就会产生两个class文件,分别为A.class和A$B.class。所以如果文件中还存在另外一个顶层类A$B,那么编译之后生成的A$B.class文件就会与A的成员类冲突。

3.      Java语言规范中,标识符的长度是任意的。但是在java 虚拟机规范中,标识符是有长度限制的。在class文件中,代表标识符的常量字符串在CONSTANT_Utf8_info表中,而该表使用两个字节(length)来表示字符串的长度,length是无符号类型,所以最大长度是2 ^16 – 1,即65535。但是这个最大长度仅限于除了空字符以外的ASCII字符,如果超出这个范围,最大长度将会减少。

0 0
原创粉丝点击