Java中的关键字和标识符

来源:互联网 发布:福顺达对讲机写频软件 编辑:程序博客网 时间:2024/05/02 02:53

一.Java中对goto关键字的处理

在Java中,我们不能使用goto关键字,而是使用循环标签,但是为了避免程序员自行使用goto,所以保留了goto作为一个关键字。类似的关键字还有const。

二.true、false、null是否是关键字

在Java中,true、false、null都不是关键字,而是字面常量(也称为直接量),其中,true和false是布尔类型的字面常量,null是引用类型的字面常量。这三个字面常量也不能作为标识符使用。

三.Java中的关键字

关键字含义abstract表明类或者成员方法具有抽象属性assert用来进行程序调试boolean基本数据类型之一,布尔类型break提前跳出一个块byte基本数据类型之一,字节类型case用在switch语句之中,表是其中的一个分支catch用在异常处理中,用来捕捉异常char基本数据类型之一,字符类型class类const保留关键字,没有具体含义continue回到一个块的开始处default默认,例如,用在switch语句中,表明一个默认的分支do用在do-while循环结构中double基本数据类型之一,双精度浮点数类型else用在条件语句中,表明当条件不成立时的分支enum枚举extends表明一个类型是另一个类型的子类型,这里常见的类型有类和接口final用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变finally用于处理异常情况,用来声明一个基本肯定会被执行到的语句块float基本数据类型之一,单精度浮点数类型for一种循环结构的引导词goto保留关键字,没有具体含义if条件语句的引导词implements表明一个类实现了给定的接口import表明要访问指定的类或包instanceof用来测试一个对象是否是指定类型的实例对象int基本数据类型之一,整数类型interface接口long基本数据类型之一,长整数类型native用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN语言)实现的new用来创建新实例对象package包private一种访问控制方式:私用模式protected一种访问控制方式:保护模式public一种访问控制方式:共用模式return从成员方法中返回数据short基本数据类型之一,短整数类型static表明具有静态属性strictfp用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范super表明当前对象的父类型的引用或者父类型的构造方法switch分支语句结构的引导词synchronized表明一段代码需要同步执行this指向当前实例对象的引用throw抛出一个异常throws声明在当前定义的成员方法中所有需要抛出的异常transient声明不用序列化的成员域try尝试一个可能抛出异常的程序块void声明当前成员方法没有返回值volatile表明两个或者多个变量必须同步地发生变化while用在循环结构中四.Java标识符的定义规则

1.大多数人理解的Java标志符的定义规则:

(1).标识符由字母、数字、货币符号(¥、$)、连接符号(_)组成。

(2).标识符的首字母可以是字母、货币符号与连接符号,但是不能为数字。

(3).标识符不能与Java中的关键字相同。

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

上面的规则在大部分时候是正确的,但是要注意这里的字母不只是传统中的26个英文字母,而是Unicode字符集,Unicode字符集的取值范围是U+0000~U+10FFFF,但是不是每一个Unicode值都与一个字符相对应,这就意味着不是整个Unicode字符集都可以作为Java中的标识符。还有就是不能作为Java标识符首字母的字符集,也不仅仅是简单的0~9这10个数字。那么我们怎么判断一个Unicode是否可以作为Java标识符呢?在Character中有这样两个方法可以进行判断:

public static boolean isJavaIdentifierStart(char ch);判断对应的字符是否可以作为Java的标识符的首字符

public static boolean isJavaIdentifierPart(char ch);判断对应的字符是否可以作为Java的标识符

由于Unicode字符集的扩展,为了能够处理增补字符(U+10000~U+10FFFF),在jdk1.5中增加了两个方法,也用于此作用:

public static boolean isJavaIdentifierStart(int codePoint);判断代码点对应的字符是否可以作为Java的标识符的首字符

public static boolean isJavaIdentifierPart(int codePoint);判断代码点对应的字符是否可以作为Java的标识符

2.现在,我们重新定义一下标识符的定义规则:

(1).标识符的首字母对应的代码点必须使得Character类的isJavaIdentifierStar()方法返回值为true,后续的字符对应的代码点必须使得Character类的isJavaIdentifierPart()的返回值为true。

(2).标识符不能与Java中的关键字相同。

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

(4).标识符的长度必须在系统所支持的范围内。

五.注意符号“$”的使用

在定义Java标识符的时候,我们可以使用$,并且可以使用它作为标识符的首字母,但是我们需要注意$这个符号可以在内部类中使用,所以当我们使用$作为关键字字符时,需要考虑到这一点。

public class User$Vip {public static void main(String[] args) {}}class User{class Vip{void print(){System.out.println("vip");}}}

上面这个例子就是因为类标志符中使用$,与内部类中的$冲突,所以编译的时候会报错,提示User.Vip类重复了。其原因是在编译为class文件的时候,会存在两个User$Vip.class,所以会报错。

六.标识符的最大长度

在Java语言规范中,对于Java标志符的长度是没有限制的,但是在Java虚拟机规范中,标识符是有长度限制的。在class文件中,代表标识符的常量字符串存储在CONSTANT_Utf8_info表中,这个表用了两个字节的来表示字符串的长度。所以最大表示65535.



 







0 0
原创粉丝点击