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 也用于静态块,多用于初始化操作:
    1. public class PreCache {
    2. static {
    3. // 执行相关操作
    4. }
    5. }

此外 static 也多用于修饰内部类,此时称之为静态内部类。
最后一种用法就是静态导包,即 import static。import static 是在 JDK1.5 之后引入的新特性,可以用来指定导入某个类中的静态资源,并且不需要使用类名,可以直接使用资源名,例如:

  1. import static java.lang.Math.*;
  2. public class Test {
  3. public static void main(String[] args) {
  4. // System.out.println(Math.sin(20)); 传统做法
  5. System.out.println(sin(20));
  6. }
  7. }

static 和 final 的区别

修饰物 关键词 影响
变量 final 分配到常量池中,程序不可改变其值
变量 static 分配在内存堆上,引用都会指向这一个地址而不会重新分配内存
方法 final 子类中将不能被重写
方法块 static 虚拟机优先加载
final 不能被继承
static 可以直接通过类来调用而不需要 new