———Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ———
在java中保留关键字是被java本身定义使用的字母组合,具有特殊意义,所以不能用作变量名、方法名以及包名。Java共有51个关键字,中const和goto虽然被保留但未被使用。保留关键字分为8大类:
一、访问控制:
序号 | 保留关键字 | 定义或作用 |
1 | private | 私有的 |
2 | protected | 受保护的 |
3 | public | 公共的 |
二、类、方法、变量的修饰符:
序号 | 保留关键字 | 定义或作用 |
4 | abstract | 声明为抽象 |
5 | class | 类 |
6 | extends | 扩展、继承 |
7 | final | 终极、不可变 |
8 | implements | 实现 |
9 | interface | 接口 |
10 | native | 本地 |
11 | new | 新建、创建 |
12 | static | 静态 |
13 | strictfp | 严格精准 |
14 | synchronized | 同步 |
15 | transient | 短暂 |
16 | volatile | 易失 |
三、程序控制语句:
序号 | 保留关键字 | 定义或作用 |
17 | break | 中断、跳出循环 |
18 | continue | 继续 |
19 | return | 返回 |
20 | do | 运行 |
21 | while | 循环 |
22 | if | 如果 |
23 | else | 那么、反之 |
24 | for | 循环 |
25 | instanceof | 是否实例 |
26 | switch | 开关 |
27 | case | 返回开关的结果 |
28 | deault | 默认 |
四、异常处理
序号 | 保留关键字 | 定义或作用 |
29 | catch | 处理异常 |
30 | finally | 最终都执行 |
31 | throw | 抛出一个异常对象 |
32 | throws | 声明一个异常可能被抛出 |
33 | try | 捕获异常 |
五、包相关:
序号 | 保留关键字 | 定义或作用 |
34 | import | 引入 |
35 | package | 包 |
六、基本类型:
序号 | 保留关键字 | 定义或作用 |
36 | boolean | 布尔 |
37 | byte | 字节 |
38 | char | 字符 |
39 | double | 双精度 |
40 | float | 单精度 |
41 | int | 整型 |
42 | long | 长整型 |
43 | short | 短整型 |
44 | null | 对象的空 |
45 | true | 真 |
46 | false | 假 |
null“”
七、变量引用:
序号 | 保留关键字 | 定义或作用 |
47 | super | 父类、超类 |
48 | this | 本类 |
49 | void | 无返回值 |
八、访问控制保留字(未使用)
序号 | 保留关键字 | 定义或作用 |
50 | const | 常量 |
51 | goto | 跳转 |
JAVA的修饰符
修饰符 | 类 | 变量 | 方法 |
abstract | 抽象类 |
| 抽象方法 |
final | 最终类 | 最终变量:常量 | 最终方法(不可重写) |
static |
| 静态(类)变量 | 静态(类)方法 |
volatile |
| 易失变量 |
|
native |
|
| 本地方法 |
synchronized |
|
| 同步方法 |
访问修饰控制符 | |||
private |
| √ | √ |
protected |
| √ | √ |
默认 | √ | √ | √ |
public | √ | √ | √ |
说明:
1、使用volatile关键字修饰的为“容易失去”的变量,即为该变量可能同时被多个线程所控制和修改,在程序执行过程中该变量可能被其它的程序所修改,通常volatile用来修饰接受外部输入的变量。如表示当前系统时间的变量。
2、使用native修饰的方法为其它(C、C++等)语言的特殊方法。
3、使用synchronized声明的方法为同步方法,即在多线程中该方法调用时会把当前的对象“加锁”,从而达到同步的目的。
Java的访问修饰符的控制范围 | ||||
控制范围 | Private | Protected | Public | 默认(包) |
同一个类中 | 是 | 是 | 是 | 是 |
同包中子类 | 否 | 是 | 是 | 是 |
同包中非子类 | 否 | 是 | 是 | 是 |
不同包中子类 | 否 | 是 | 是 | 否 |
不同包中非子类 | 否 | 否 | 是 | 否 |
以上中需要注意对于不在同一个包中的子类在使用父类的protected的成员时,只能通过继承的方式调用而不能使用父类的引用来调用。
this与super的区别:
序号 | 比较点 | This | Super |
1 | 属性 | This.属性是本类中的属性,如果本类中没有则会调用父类的属性 | Super.属性子类直接调用父类的属性 |
2 | 方法 | 方法是调用本类中的方法,如果本类中没有则调用父类的同名方法 | 直接调用子类继承的父类的方法 |
3 | 构造 | 调用本类中的其它构造方法,但至少要求本类的其中一个构造中没有this() | 子类构造中调用父类构造,子类不管如何编写代码肯定首先调用父类的的构造 |
调用构造时必须是第一行 | 子类构造中必须是第一行 | ||
4 | 特殊点 | This 表示当前对象 | 无此概念 |
5 | Static | 不适用 | 不适用 |
方法重载与重写(重点)
序号 | 比较点 | 重载 | 重写 |
1 | 英文 | Overload | Override |
2 | 概念 | 方法名称一致,参数类型、个数和顺序不同 | 方法名称、参数列表,返回值完全相同 |
3 | 范围 | 同一个类中 | 继承关系 |
4 | 注意点 | 与返回值无关 | 访问权限不能变小 |
final关键字的使用:
修饰范围 | 作用与说明 |
类 | 该类不能被继承(断子绝孙),没有子类。final类中的方法默认为fianl。 |
方法 | 不能被子类的同名方法重写,但可以被继承。 |
成员变量 | 表示常量,只能赋值一次,不能再被修改。 |
构造方法 | 不适用 |
接口的特性:
1、所有接口方法隐含都是公共的和抽象的。
2、接口中定义的所有变量必须是公共的、静态的和最终的。
3、接口方法一定不能使静态的。
4、因为接口中的方法是抽象的,所以不能将其标示为final、strictfp、native。
5、接口可以扩展一个或多个接口
6、接口不能扩展除了其它接口之外的任何内容
7、接口不能实现另一个接口或类。