Java中的关键字和标识符

一.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.



 







  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值