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 关键字详细介绍
final
final 关键字在 Java 中有什么作用?
final 可用于修饰类、类属性和类方法。
特征:凡是引用 final 关键字的地方皆不可修改!
- 修饰类:表示该类不能被继承。
- 修饰变量:表示变量只能一次赋值之后值不能被修改(常量)。
-
final 有哪些用法?
这个问题很多面试官都喜欢问,虽然无聊但确实能让人懵逼一下。
被 final 修饰的类不能被继承。
- 被 final修饰的常量,在编译阶段会存入常量池内。
- 被 final 修饰的变量不能被改变。如果修饰引用,那么表示引用不可变,引用指向的内容可变。
- 被 final 修饰的方法不能被重写。
- 被 final 修饰的方法,JVM 会尝试将其内联,以提高运行效率。
除此之外,编译器对 final 域要遵守的两个重排序规则更好:
- 在构造函数内对一个 final 域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。
- 初次读一个包含 final 域的对象的引用,与随后初次读这个 final 域,这两个操作之间不能重排序。
static
static 有哪些用法?
大家都知道 static 关键字两个基本的用法:静态变量和静态方法。也就是说,被 static 所修饰的变量/方法都属于类的静态资源,类实例所共享。
除了静态变量和静态方法之外,static 也用于静态块,多用于初始化操作:public class PreCache {static {// 执行相关操作}}
此外 static 也多用于修饰内部类,此时称之为静态内部类。
最后一种用法就是静态导包,即 import static。import static 是在 JDK1.5 之后引入的新特性,可以用来指定导入某个类中的静态资源,并且不需要使用类名,可以直接使用资源名,例如:
import static java.lang.Math.*;public class Test {public static void main(String[] args) {// System.out.println(Math.sin(20)); 传统做法System.out.println(sin(20));}}
static 和 final 的区别
| 修饰物 | 关键词 | 影响 |
|---|---|---|
| 变量 | final | 分配到常量池中,程序不可改变其值 |
| 变量 | static | 分配在内存堆上,引用都会指向这一个地址而不会重新分配内存 |
| 方法 | final | 子类中将不能被重写 |
| 方法块 | static | 虚拟机优先加载 |
| 类 | final | 不能被继承 |
| 类 | static | 可以直接通过类来调用而不需要 new |
