一、概念
Java关键字(Key Word): 对Java的编译器有特殊的意义,他们用来表示一种数据类型或者表示程序的结构.
保留字(Reserve Word):即它们在Java现有版本中没有特殊含义,以后版本可能会作为有特殊含义的词,或者该词虽然在Java中没有特殊含义,以后版本也不打算使用,但在其它语言中有特殊含义,不宜在Java中定义为变量名称等,因为容易混淆。
注意:关键字和保留字均不能用作变量名、方法名、类名、包名和参数。
二、具体的保留字(2个)
goto、const
三、具体的关键字(51个)
大致含义:
| 关键字 | 含义 |
| 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算术规范 [1] |
| super | 表明当前对象的父类型的引用或者父类型的构造方法 |
| switch | 分支语句结构的引导词 |
| synchronized | 表明一段代码需要同步执行 |
| this | 指向当前实例对象的引用 |
| throw | 抛出一个异常 |
| throws | 声明在当前定义的成员方法中所有需要抛出的异常 |
| transient | 声明不用序列化的成员域 |
| try | 尝试一个可能抛出异常的程序块 |
| void | 声明当前成员方法没有返回值 |
| volatile | 表明两个或者多个变量必须同步地发生变化 |
| while | 用在循环结构中 |
- abstract 抽象的
Java语言的一个关键字,用在类的声明中来指明一个类是不能被实例化的,但可以被其它类继承。一个抽象类可使用抽象方法,抽象方法不需实现,但是需在子类中被实现。
abstract关键字可以修饰类或方法。
abstract类可以扩展(增加子类),但不能直接实例化。
abstract方法不在声明它的类中实现,但必须在某个子类中重写。
public abstract class MyClass{}
public abstract String myMethod();
采用abstract方法的类本来就是抽象类,并且必须声明为abstract。
abstract类不能实例化。
仅当abstract类的子类实现其超类的所有abstract方法时,才能实例化abstract类的子类。这种类称为具体类,以区别于abstract类。
如果abstract类的子类没有实现其超类的所有abstract方法,该子类也是abstract类。
abstract关键字不能应用于static、private或final方法,因为这些方法不能被重写,因此,不能在子类中实现。
final类的方法都不能是abstract,因为final类不能有子类。
2. assert 断言
Java语言的一个关键字。
断言在软件开发中是一种常用的调试方式,很多开发语言中都支持这种机制。一般来说, 断言用于保证程序最基本、关键的正确性。断言检查通常在开发和测试时开启。为了保证程序 的执行效率,在软件发布后断言检查通常是关闭的。
断言是一个包含布尔表达式的语句,
在执 行这个语句时假定该表达式为 true;如果表达式的值为 false,那么系统会报告一个 AssertionError。 断言的使用如下面的代码所示:
assert(a > 0); // throws an AssertionError if a 1.与数据类型相关(10)
| 关键字 | 类型 | 占字节数 | 备注 |
| boolean | 布尔数据类型 | 1 | 有true和false两个值 |
| int | 整型数据类型 | 4 | -214783648~214783647 |
| long | 长整型数据类型 | 8 | -9223372036854775808~9223372036854775807 |
| short | 短整型数据类型 | 2 | -32768~32767 |
| byte | 字节数据类型 | 1 | 大小范围为-27—27-1 |
| float | 浮点型(实数型) | 4 | 1.4E-45~3.4E38 |
| double | 双精度型数据类型 | 8 | 4.900000E-324~1.797693E+308 |
| char | 字符型数据类型 | 2(Unicode码) | 不同的字符集下有所不同 |
| class | 表示一个类 | 不确定 | 可用于定义一个类 |
| interface | 表示一个接口 | 不确定 | 可用于定义一个接口 |
>2.与流程控制相关(13)
- if: 表示条件判断,一般用法if(关系表达式),后跟else或{……}
- else: 条件转折,如if (关系表达式){语句块1}else{语句块2},如果关系表达式的值为true,则执行语句块1,否则执行语句块2.
- do……while……:do和while一般一起使用,用于表示循环语句。do{……}while(关系表达式)……;当关系表达式的值为true是继续循环。
- for:用于表示循环,for循环是最常使用的循环,格式for(表达式a; 表达式b; 表达式c)括号里面的书通常用于控制循环的次数,一般会用一个int类型的变量类计数,如(int i=0; i
3.与修饰符相关(12)不同访问修饰符的访问权限
范围 本类 同软件包 不同包中子类 不同包且无继承 作用(含义) public 可以 可以 可以 可以 公有的 protect 可以 可以 可以 不可以 受保护的 default(无权限修饰符) 可以 可以 不可以 不可以 当前的 private 可以 不可以 不可以 不可以 私有的 - 一个".java"后缀名的文件里面只能一个publi型的cass类。如c13.swing包下有HelloWorld.java 文件,该文件下有如下代码:
package c13.swing;
public class HelloWorld {
public void show() {
System.out.println("HelloWorld!");
}
}2. 在default包下有如下代码:
import c13.swing.*; //引入所需要的包里的所有类
public class Test {
public static void main(String args[]) {
HelloWorld h = new HelloWorld();
h.show();
}
}
此时运行正常,结果:HelloWorld!
如果把public class HelloWorld改成privateclass HelloWorld则会运行错误,因为private是私有的不能被其他包内的对象所引用。
3. final:(类似于C++中的const),用法如下:
final的变量的值不能被改变;
1) final的方法不能被重写;2) final的类不能被继承。
4. void:空类型,用于函数前表示空返回值。
5. static:可用于定义静态成员变量或方法
6. strictfp:意思是FP-strict,也就是说精确浮点的意思。在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java的编译器以及运行环境在对浮点运算的表达式是采取一种近似于我行我素的行为来完成这些操作,以致于得到的结果往往无法令你满意。而一旦使用了strictfp来声明一个类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。因此如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。
你可以将一个类、接口以及方法声明为strictfp,但是不允许对接口中的方法以及构造函数声明strictfp关键字,例如下面的代码:
1. 合法的使用关键字strictfp
strictfp interface A {}
public strictfp class FpDemo1 {
strictfp void f() {}
}
2. 错误的使用方法
interface A {
strictfp void f();
}
public class FpDemo2 {
strictfp FpDemo2() {}
}
一旦使用了关键字strictfp来声明某个类、接口或者方法时,那么在这个关键字所声明的范围内所有浮点运算都是精确的,符合IEEE-754规范的。例如一个类被声明为strictfp,那么该类中所有的方法都是strictfp的。
7. abstract:抽象的意思,可以用定义抽象类,抽象函数。抽象类的用法规则如下:
a,用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract来修饰一个方法时,这个方法叫做抽象方法;
b,含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写;
c,抽象类不能被实例化;
d,抽象方法只需声明,而不需实现。
8. transient: 用来表示一个域不是该对象串行化的一部分。当一个对象被串行化时,transient型变量的值不包括在串行化的表示中,然而非transient型的变量是被包括进去的。
使用对象:字段
介绍:字段不是对象持久的一部分,不应该字段和对象一起串起。
9. synchronized:锁定当前对象,在执行当前这个对象时不应许其他线程打断插入。使用的方式有:
(1)class Timer {
private static int num = 0;
public synchronized void add(String name) { //执行这个方法的过程中锁定当前对象。
num ++;
try {
Thread.sleep(1);
} catch( InterruptedException e) {
return;
}
System.out.println(name + ",你是第" + num +"使用Timer的线程。");
}
}
(2)class Timer {
private static int num = 0;
public void add(String name) {
synchronized(this) { //锁定大括号这个区域的代码段
num ++;
try {
Thread.sleep(1);
} catch( InterruptedException e) {
return;
}
System.out.println(name + ",你是第" + num +"使用Timer的线程。");
}
}
}
11. volatile:volatile变量一个时间只有一个线程可以访问。 保证线程安全。
可以被写入 volatile 变量的这些有效值独立于任何程序的状态,包括变量的当前状态。
所以,Volatile 变量是一种非常简单但同时又非常脆弱的同步机制,它在某些情况下将提供优于锁的性能和伸缩性。
12. native:是用作java 和其他语言(如c++)进行协作时用的也就是native 后的函数的实现不是用java写的, native的意思就是通知操作系统,这个函数你必须给我实现,因为我要使用。所以native关键字的函数都是操作系统实现的,
java只能调用。>4.与动作相关(10)
- package:打包,把java程序写在一个包中。
- import:引入报名,用法:
1) 写全包名:jsxt.java140.Cat c = new com.bjsxt.java140.Cat
2) 引入一个包中的具体某个对象:xt.java140.Cat;
3) 引入一个包中的所有象:import com.bjsxt.java140.Cat.*;3. throw:抛出用户自己定义的异常
4. throws:抛出系统异常
5. extends:继承(类继承类,或接口继承接口)
6. implements:实现,通过类来实现接口
7. this:是指向该对象自身的标示符
8. super:调用基类的构造函数
9. instanceof:判断某个对象是否为自己所要的对象
10. new:用于新建一个对象,即类的实例化
>5.1其他(5)- true:表示boolean类型的真值
- false:表示boolean类型的假值,即不成立的情况
- null:表示空值,如果是对象,则表示此对象为空,如果是数据类型,在表示相应数据类型的默认值,如int的默认值为0。
- goto:C\C++中实现无条件转向语句,为了结构化程序设计java中现在一般不用。
- const:和const一样,在Java中,const是作为保留字以备扩充。可以用final替换const,一般C++中用const,java中用final。
>6.与格式规范(1)
- strictfp:
修饰类、接口或方法。
修饰方法时,该方法中所有的float和double表达式都严格遵守FP-strict的限制,符合IEEE-754规范。
修饰类或接口时,该类中的所有代码,包括嵌套类型中的初始设定值和代码,都将严格地进行计算。
严格约束意味着所有表达式的结果都必须是 IEEE 754 算法对操作数预期的结果,以单精度和双精度格式表示。
---------------------
参考原作者:Alexwym,luoweifu
本文于周末温习Java关键字,以及观看博客文章后,有感而发的参考原文章,重新整理结合知识点进行编写,望各位大牛大佬们在查阅这篇文章中,发现有错误之处,或是其他小文章,都可直接向鄙人(刚入门小弟子)指点,感谢支持,我会更加努力的,谢谢【微笑】!!!
