Java之关于标识符
2016-03-05 11:43
716 查看
最近看到Java标识符这一块的时候,对其又有了更加深入的了解,以下是我的一些总结:
Java语言要求类名、方法名、变量名、常量名等都必须是合法的标识符。我们通常所说的标识符第一个字符必须是字母、下划线或者$,后面的字符可以是上面的字符或者是数字,当然前提是后面还有字符。通过查找资料才知道,原来这里的字母并不单纯指我们熟悉的26个大小写字母,而是指Unicode字符集。
于是标识符的定义又有了如下规则:1.首字符所对应的代码点必须使得Character类的isJavaIdentifierStart方法返回值为true,如果有后续字符,那么后续字符所对应的代码点必须使得Character类的isJavaIdentifierPart方法返回值为true;2.标识符不能和Java中的关键字和保留字相同;3.标识符不能和Java中预定义的字面常量相同;4.标识符长度必须在系统支持范围内。
另外需要注意的是:1.Java将goto和const定义为保留字,基本没有语法应用,但是不能使用它们作为标识符;
2.系统定义的true,false,null并不是关键字,而是字面常量,仍然不允许作为标识符使用;
3.$可作为标识符使用,但是我们应该减少对他的使用。因为$通常在编译器生成的标识符名称中使用。假如一个类为A,在内部声明成员类B,编译后就会产生A.class和A$B.class,如果我先定义一个类为A$B,然后定义一个类为A,并在A内部声明成员类B,编译之后就会生成三个class文件:A$B.class,A.class,A$B.class,因为产生两个A$B.class,故会报编译错误;
4.在Java语言规范中,标识符的长度是任意的;Java虚拟机规范中,标识符是有长度限制的,最大长度为65535,但是这个最大长度仅限于除空字符null以外的字符;
5.标识符区分大小写。
Java语言要求类名、方法名、变量名、常量名等都必须是合法的标识符。我们通常所说的标识符第一个字符必须是字母、下划线或者$,后面的字符可以是上面的字符或者是数字,当然前提是后面还有字符。通过查找资料才知道,原来这里的字母并不单纯指我们熟悉的26个大小写字母,而是指Unicode字符集。
于是标识符的定义又有了如下规则:1.首字符所对应的代码点必须使得Character类的isJavaIdentifierStart方法返回值为true,如果有后续字符,那么后续字符所对应的代码点必须使得Character类的isJavaIdentifierPart方法返回值为true;2.标识符不能和Java中的关键字和保留字相同;3.标识符不能和Java中预定义的字面常量相同;4.标识符长度必须在系统支持范围内。
另外需要注意的是:1.Java将goto和const定义为保留字,基本没有语法应用,但是不能使用它们作为标识符;
2.系统定义的true,false,null并不是关键字,而是字面常量,仍然不允许作为标识符使用;
3.$可作为标识符使用,但是我们应该减少对他的使用。因为$通常在编译器生成的标识符名称中使用。假如一个类为A,在内部声明成员类B,编译后就会产生A.class和A$B.class,如果我先定义一个类为A$B,然后定义一个类为A,并在A内部声明成员类B,编译之后就会生成三个class文件:A$B.class,A.class,A$B.class,因为产生两个A$B.class,故会报编译错误;
4.在Java语言规范中,标识符的长度是任意的;Java虚拟机规范中,标识符是有长度限制的,最大长度为65535,但是这个最大长度仅限于除空字符null以外的字符;
5.标识符区分大小写。
相关文章推荐
- 插入排序的java实现
- eclipse 调整注释文字大小
- 上机题目(初级)- 滚雪球(Java)
- Eclipse修改编码格式
- 出现java.util.concurrent.RejectedExecutionException或者Thread pool exhausted怎么办?
- Java中String类的特点以及常用的方法
- java 单例与序列化
- eclipse 显示行数
- java学习书籍推荐
- javaweb入门20160305---xml的解析入门
- Did not find handler method for springMVC资源文件扫描不到---关于spring的那些坑
- IT十八掌作业_java基础第四天_复习运算符、进制转化和数组
- eclipse 安装 svn 插件
- java Log
- leetcode:Palindrome Number 【Java】
- java并发编程(2)--volatile(转)
- Javaweb中的监听器
- 使用Eclipse自带Web Service插件(Axis1.4)生成Web Service服务端/客户端
- 使用Eclipse自带的Axis1插件生成WSDL文件
- IDEA15使用maven编译scala和java