在我们认识Java中的标示符的时候,知道了标示符的定义规则里有一条:
Java自身提供的49个关键字不能作为标示符定义。
那么,所谓的关键字是什么呢?关键字实际上是Java中的特殊保留字。
值得留意的就是特殊与保留两个字。为什么呢?因为通俗的来说,所谓的关键字事实上我们也可以理解为标示符存在,
只不过这种标示符因为Java自身为其赋予了特殊的意义,所以作为Java自身所保留的标示符存在。
自然的,我们也就不能再单独的使用这些标示符作为自定义的标示符。
我们同样可以结合实际生活中的例子来帮助我们更形象的理解关键字的概念。
就如同我们在认识标示符时提到的概念一样。我们可以将我们自己的姓名视作是我们自身的“标示符”。
只要符合中国的取名规范,我们可以用不同的汉字组成我们自己特有的姓名。
但是,如今可能没有人会使用“北京”,“毛泽东”来作为姓名了吧。(当然只是举个例子,我也不知道是不是法律规定不能以这些作为名字)
其原因就是因为,这些类似的“标示符”在发展过程中,已经有了人们共识,特殊的意义。
当谈论起“北京”,人们都认为是在谈论中国的首都,可能没有人能意识到这是你的名字。
同理的,Java中的关键字已经被赋予了特殊的意义,如果你使用这些关键字作为自己的标示符。
那么,Java的编译器在执行编译工作时,它只会识别其本身代表的含义;并不能了解你自定义的意义;这样就会造成混淆,从而编译失败。
Java中的关键字共有49个,下面就让我们对这个49个不同的关键字,通过其“功能性”对其进行一个分类,从而分别了解它们的作用。
http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html
**访问修饰符关键字**
在具体的了解不同的访问修饰符关键字的作用之前,我们首先应当知道什么是访问修饰符。
所谓的访问修饰符,简单来说就是指:用于对成员的访问权限的限定的修饰符。那么,接下来就让我们看一看Java中具体有哪些不同的访问修饰符。****
- public :公共访问修饰符
- private :私有访问修饰符
- protected:受保护访问修饰符
除此之外,实际还有另一种访问权限:
friendly :默认访问修饰符(不书写任何访问修饰符关键字的形式,friendly自身不是访问修饰符,因为这种访问权限下,只有当前类和同一包中的类可以访问,所以这种访问权限又被称为包访问权限)
![](https://box.kancloud.cn/2016-08-17_57b4315f92c07.jpg)
除此之外,值得注意的就是:其余几种访问修饰符都可以修饰任何成员,但是在Java中,类只能被声明为public或者默认访问权限。
**类、方法和变量修饰符关键字**
- abstract :抽象修饰符。该修饰符修饰一个类时,代表此类为一个抽象,该类不能被实例化。修饰一个方法时,代表该方法为抽象方法,该方法必须被子类实现。
- class :定义类的关键字。
- extends :用于指出子类所扩展的父类的关键字。
- final :此关键字修饰的成员:类不能被继承,方法不能被覆写,变量不能被重新初始化。
- implements :用于指出类所实现的接口的关键字。
- interface :定义接口的关键字。
- native :该关键字修饰的方法意为一个本地方法,代表该方法是用于平台相关的语言(如C)实现的。
- new :通过该关键字调用构造函数实例化一个对象。
- static :静态修饰符,被该关键字修饰的成员属于一个类,而不属于对象(实例)。
- strictfp :用于修饰类或方法,指出此类或方法中的所有表达式中的浮点数将严格遵循FP限制规则。
- synchronized :同步修饰符。用于多线程中,被修饰的方法或代码块同时只能被一个线程所访问。
- transient :瞬态修饰符。常用于修饰关联IO流操作的变量,代表防止被修饰的变量串行化。(举例来说,例如使用一个输出流将一个对象串行化输出到一个外部文件时,被该修饰符修饰的变量的值将不会被串行化输出到外部文件当中)
- volatile :指出变量可能改变,失去同步,因为它被用在多个线程当中。
**流程控制关键字**
- break :从其所在的代码块中退出
- continue :停止循环内该语句后其余代码的执行,立马开始该循环的下一次循环。
- case :根据switch测试结果执行某个代码块
- default :如果条件与swicth语句中任何一个case都不匹配,则执行这个代码块中的内容。
- do :先执行一次该代码块,之后再与while语句结合,判断是否应该再次执行该代码块。
- else :如果if运算结果为false,则执行该代码块中的内容
- for :为代码块执行条件判断
- if :执行逻辑判断,判断结果为true则执行该代码块中的内容。
- Instanceof:确定对象是否是一个类、子类或接口的实例
- return :从方法返回
- switch :指出与case语句比较的变量
- while :当某个条件为true时,重复的执行该代码块。
**错误处理关键字**
- catch :声明用于捕获处理异常的代码块
- finally:该关键字修饰的代码块通常跟在try-catch或try之后,意味当带有异常处理时,程序流程如何,最终都将执行这个代码块中的内容
- throw :把异常向上传递到调用该方法的方法。
- throws :指出该方法将可能存在异常
- try :声明将要执行单可能引发异常的代码块
- assert :断言。计算条件表达式,以验程序员的假设。
**包控制关键字**
- import :把包或类导入到代码中
- package:指出当前类属于哪个包
**基本数据类型关键字**
- boolean:布尔数据类型
- byte:字节数据类型
- char:字符数据类型
- short:短整型数据类型
- int:整型数据类型
- long:长整型数据类型
- float:单精度浮点数据类型
- double:双精度浮点数据类型
**变量关键字**
- super:引用直接父类的引用变量
- this:引用当前对象的实例的引用变量
**空返回类型关键字**
- void:指出方法没有任何返回类型
**
**
**未使用的保留字**
- goto
- const
以上就是Java中所有的49个关键字,我们会在实际应用中频繁的接触当中大部分的关键字,也有一小部分是实际开发中较少用到的。
我们可以通过实际开发更好的理解各个关键字的用法与效果,但必须要记住的就是:不要将这些关键字用作自定义的标示符。
- 前言
- 第一个专栏《重走J2SE之路》,你是否和我有一样的困扰?
- 磨刀不误砍材工 - 环境搭建(为什么要配置环境变量)
- 磨刀不误砍材工 - Java的基础语言要素(定义良好的标示符)
- 磨刀不误砍材工 - Java的基础语言要素(关键字)
- 磨刀不误砍材工 - Java的基础语言要素(注释-生成你自己的API说明文档)
- 磨刀不误砍材工 - Java的基础语言要素(从变量/常量切入,看8种基本数据类型)
- 磨刀不误砍材工 - Java的基础语言要素(运算符和表达式的应用)
- 磨刀不误砍材工 - Java的基础语言要素(语句-深入理解)
- 磨刀不误砍材工 - Java的基础语言要素(数组)
- 换一个视角看事务 - 用"Java语言"写"作文"
- 牛刀小试 - 浅析Java的继承与动态绑定
- 牛刀小试 - 详解Java中的接口与内部类的使用
- 牛刀小试 - 趣谈Java中的异常处理
- 牛刀小试 - 详解Java多线程
- 牛刀小试 - 浅析Java集合框架的使用
- 牛刀小试 - Java泛型程序设计
- 牛刀小试 - 详细总结Java-IO流的使用