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 |