Java 的关键字和保留字:
下面介绍一下常用的一些关键字
1. static 关键字
static 关键字可以用来修饰变量,方法、代码块和内部类,分别被称作静态变量,静态方法、静态代码块和静态内部类。
静态变量
private int a; // 实例变量
private static int b; // 静态变量
又被称作是类变量,是属于类本身的,类存在变量就存在,可以直接用过类名访问,也可以通过类的实例对象访问。
在类装载时,静态变量只被分配一块内存空间。
静态方法
public class StaticDemo {
private static void staticMethod(){
System.out.println("this is static method...");
}
}
静态方法在类加载时就已经存在,它不依赖于任何实例,和静态变量一样。
所有的静态方法必须有实现,也就是说静态方法不能为抽象方法。
在静态方法中不能访问非静态方法和变量。
静态代码块
static {
}
静态代码块在类加载时执行,先于构造方法。
静态内部类
public class OuterClass {
class InnerClass {
}
static class StaticInnerClass {
}
public static void main(String[] args) {
// InnerClass innerClass = new InnerClass(); // 'OuterClass.this' cannot be referenced from a static context
OuterClass outerClass = new OuterClass();
InnerClass innerClass1 = outerClass.new InnerClass();
StaticInnerClass staticInnerClass = new StaticInnerClass();
}
}
在静态内部类中,不能访问外部类的非静态方法和变量。
初始化顺序
- 父类(静态变量、静态代码块)
- 子类(静态变量、静态代码块)
- 父类(实例变量、普通代码块、构造方法)
- 子类(实例变量、普通代码块、构造方法)
2. final 关键字
修饰变量
-
对于基本数据类型,final 使值不可改变
-
对于引用类型,final 使引用不可变,不可在引用其他对象,但是对象本身可以被修改。
修饰方法
final 修饰的方法不能被重写。
在 private 修饰的方法中,被隐式的指定为 final。
如果子类存在与父类中的 private 修饰的方法重名,子类不属于重写方法,只是定义了一个新的方法。
修饰类
final 修饰的类不可被继承。