1. 访问控制
———————————————关键字——————————————— | 含义 | 详解 |
---|---|---|
public | 共用的:可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。 | 1. 可能只会在其他任何类或包中引用public类、方法或字段。 2. 所有类成员的默认访问范围都是package访问,也就是说,除非存在特定的访问控制修饰符,否则,可以从同一个包中的任何类访问类成员. |
protected | 受保护的:可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。 | 1. 可以在声明protected类、方法或字段的类、同一个包中的其他任何类以及任何子类(无论子类是在哪个包中声明的)中引用这些类、方法或字段。 2. 所有类成员的默认访问范围都是package访问,也就是说,除非存在特定的访问控制修饰符,否则,可以从同一个包中的任何类访问类成员。 |
private | 私有的:可以应用于类、方法或字段(在类中声明的变量)的访问控制修饰符。 | 1. 只能在声明private(内部)类、方法或字段的类中引用这些类、方法或字段。 2. 在类的外部或者对于子类而言,它们是不可见的。 3. 所有类成员的默认访问范围都是package访问,也就是说,除非存在特定的访问控制修饰符,否则,可以从同一个包中的任何类访问类成员。 |
2. 类、方法以及变量修饰符
———————————————关键字——————————————— | 含义 | 详解 |
---|---|---|
static (静态的) | 表明具有静态属性。可以应用于内部类(在另一个类中定义的类)、方法或字段(类的成员变量)。 | 1. 通常,static关键字意味着应用它的实体在声明该实体的类的任何特定实例外部可用。 2. static(内部)类可以被其他类实例化和引用(即使它是顶级类)。 3. static字段(类的成员变量)在类的所有实例中只存在一次。 4. 可以从类的外部调用static方法,而不用首先实例化该类。这样的引用始终包括类名作为方法调用的限定符。 |
final (最终的、不可改变的) | 用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变,用来定义常量。 | 1. 可以应用于类,以指示不能扩展该类(不能有子类)。 2. 可以应用于方法,以指示不能重写任何子类中的方法。 3. 一个类不能同时是abstract又是final。abstract意味着必须扩展类,final意味着不能扩展类。 4. 一个方法不能同时是abstract又是final。abstract意味着必须重写方法,final意味着不能重写方法。 |
abstract (继承、扩展) | 表明类或者成员方法具有抽象属性。 | 1. 可以修饰类或方法。 2. 可以扩展(增加子类),但不能直接实例化。 3. abstract方法不在声明它的类中实现,但必须在某个子类中重写。 4. 采用abstract方法的类本来就是抽象类,并且必须声明为abstract。 5. abstract类不能实例化。仅当abstract类的子类实现其超类的所有abstract方法时,才能实例化abstract类的子类。这种类称为具体类,以区别于abstract类。如果abstract类的子类没有实现其超类的所有abstract方法,该子类也是abstract类。 6. abstract关键字不能应用于static、private或final方法,因为这些方法不能被重写,因此,不能在子类中实现。 7. final类的方法都不能是abstract,因为final类不能有子类。 |
extends (继承) | 表明一个类型是另一个类型的子类型,这里常见的类型有类和接口。 | 1. 一个类只能扩展一个其他类。 2. 子类可以重写父类(除final方法外)的所有方法。 3. 子类可以继承父类的所有public和protected变量和方法。 4. 用在class或interface声明中,用于指示所声明的类或接口是其名称后跟有extends关键字的类或接口的子类。 |
implements (实现) | 表明一个类实现了给定的接口。 | 1. 类必须提供在接口中所声明的所有方法的实现。 2. 一个类可以实现多个接口。 3. 用在class声明中使用,以指示所声明的类提供了在implements关键字后面的名称所指定的接口中所声明的所有方法的实现。 |
interface (接口) | 用来声明新的Java接口,接口是方法的集合。 | 1. 接口是Java语言的一项强大功能。任何类都可声明它实现一个或多个接口,这意味着它实现了在这些接口中所定义的所有方法。 2. 实现了接口的任何类都必须提供在该接口中的所有方法的实现。 3. 一个类可以实现多个接口。 |
class | 用来声明新的Java类,该类是相关变量和/或方法的集合。 | 1. 类是面向对象的程序设计方法的基本构造单位。2. 类是对象的模板。每个对象都是类的一个实例。3. 要使用类,通常使用new操作符将类的对象实例化,然后调用类的方法来访问类的功能。 |
new | 用来创建新实例对象。 | 1. new关键字后面的参数必须是类名,并且类名的后面必须是一组构造方法参数(必须带括号)。 2. 参数集合必须与类的构造方法的签名匹配。 3. =左侧的变量的类型必须与要实例化的类或接口具有赋值兼容关系。 |
native (本地) | native关键字可以应用于方法,以指示该方法是用Java以外的语言实现的。 | |
strictfp (严格,精准) | 用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范 | |
synchronized (线程,同步) | 表明一段代码需要同步执行。 | 1. 可以应用于方法或语句块,并为一次只应由一个线程执行的关键代码段提供保护。 2. synchronized关键字可防止代码的关键代码段一次被多个线程执行。 3. 如果应用于静态方法,那么,当该方法一次由一个线程执行时,整个类将被锁定。 4. 如果应用于实例方法,那么,当该方法一次由一个线程访问时,该实例将被锁定。 5. 如果应用于对象或数组,当关联的代码块一次由一个线程执行时,对象或数组将被锁定。 |
transient (短暂) | 声明不用序列化的成员域。 | 1. 可以应用于类的成员变量,以便指出该成员变量不应在包含它的类实例已序列化时被序列化。 |
volatile (易失) | 表明两个或者多个变量必须同步地发生变化。 | 1. 用于表示可以被多个线程异步修改的成员变量。 2. volatile的目标用途是为了确保所有线程所看到的指定变量的值都是相同的。(注: volatile关键字在许多Java虚拟机中都没有实现。) |
3. 流程控制
———————————————关键字——————————————— | 含义 | 详解 |
---|---|---|
if | 条件语句的引导词。 | 1. if关键字指示有条件地执行代码块。条件的计算结果必须是布尔值。 2. if语句可以有可选的else子句,该子句包含条件为false时将执行的代码。 3. 包含boolean操作数的表达式只能包含boolean操作数。 |
else | 用在条件语句中,表明当条件不成立时的分支。 | else关键字总是在if-else语句中与if关键字结合使用。else子句是可选的,如果if条件为false,则执行该子句。 |
do | 用在do-while循环结构中。 | 1. do关键字用于指定一个在每次迭代结束时检查其条件的循环。 2. do循环体至少执行一次。 3. 条件表达式后面必须有分号。 |
while | 用在循环结构中。 | while关键字用于指定一个只要条件为真就会重复的循环。 |
for | 一种循环结构的引导词。 | 1. for关键字用于指定一个在每次迭代结束前检查其条件的循环。 2. for语句的形式为for(initialize;condition;increment) 3. 控件流进入for语句时,将执行一次initialize语句。 4. 每次执行循环体之前将计算condition的结果。如果condition为true,则执行循环体。 5. 每次执行循环体之后,在计算下一个迭代的condition之前,将执行increment语句。 |
switch | 分支语句结构的引导词。 | 1. switch语句用于基于某个表达式选择执行多个代码块中的某一个。 2. switch条件的计算结果必须等于byte、char、short或int,jdk1.7后可以是String类型。 3. case块没有隐式结束点。break语句通常在每个case块末尾使用,用于退出switch语句。 4. 如果没有break语句,执行流将进入所有后面的case和/或default块。 |
case | 用在switch语句之中,表示其中的一个分支。 | 1. 用来标记switch语句中的每个分支。 2. case块没有隐式结束点。break语句通常在每个case块末尾使用,用于退出switch语句。 3. 如果没有break语句,执行流将进入所有后面的case和/或default块。 |
default | 默认,例如,用在switch语句中,表明一个默认的分支。 | 1. default块没有隐式结束点。break语句通常在每个case或default块的末尾使用,以便在完成块时退出switch语句。 2. 如果没有default语句,其参数与任何case块都不匹配的switch语句将不执行任何操作。 |
break | 提前跳出一个块。 | 1. 用于提前退出for、while或do循环,或者在switch语句中用来结束case块。2. break总是退出最深层的while、for、do或switch语句。 |
continue | 回到一个块的开始处。 | 1. continue关键字用来跳转到for、while或do循环的下一个迭代。 2. continue总是跳到最深层while、for或do语句的下一个迭代。 |
return | 从成员方法中返回数据。 | 1. return关键字会导致方法返回到调用它的方法,从而传递与返回方法的返回类型匹配的值。 2. 如果方法具有非void的返回类型,return语句必须具有相同或兼容类型的参数。 |
instanceof | 用来测试一个对象是否是指定类型的实例对象。 | instanceof关键字用来确定对象所属的类。 |
4. 数据类型
关键字 | 含义 | 详解 |
---|---|---|
byte | 字节型 | 8bit |
char | 字符型 | 16bit |
boolean | 布尔型 | |
short | 短整型 | 16bit |
int | 整型 | 32bit |
float | 浮点型 | 32bit |
long | 长整型 | 64bit |
double | 双精度 | 64bit |
String | 字符串 |
5. 错误处理
———————————————关键字——————————————— | 含义 | 详解 |
---|---|---|
throw | 抛出一个异常对象 | 1. throw语句将java.lang.Throwable作为参数。Throwable在调用栈中向上传播,直到被适当的catch块捕获。 2. 引发非RuntimeException异常的任何方法还必须在方法声明中使用throws修饰符来声明它引发的异常。 |
throws | 声明在当前定义的成员方法中所有需要抛出的异常 | 1. throws关键字将逗号分隔的java.lang.Throwables列表作为参数。 2. 引发非RuntimeException异常的任何方法还必须在方法声明中使用throws修饰符来声明它引发的异常。 3. 要在try-catch块中包含带throws子句的方法的调用,必须提供该方法的调用者。 |
try | 捕获异常 | 每个try块都必须至少有一个catch或finally子句。 |
catch | 处理异常 | 1. 每个try块都必须至少有一个catch或finally子句。 2. 如果某个特定异常类未被任何catch子句处理,该异常将沿着调用栈递归地传播到下一个封闭try块。如果任何封闭try块都未捕获到异常,Java解释器将退出,并显示错误消息和堆栈跟踪信息。 |
finally | 有没有异常都执行 | 1. finally关键字用来定义始终在try-catch-finally语句中执行的块。 2. finally块通常包含清理代码,用在部分执行try块后恢复正常运行。 3. 如果在执行try块期间出现异常,并且相应的catch块包含break、continue或return语句,控件将首先穿过finally块,之后再执行break、continue或return。 |
参考资料
1.java关键字大全: https://wenku.baidu.com/view/eaa68806eff9aef8941e0694.html