Java基础学习-----------static和final关键字总结
static关键字
使用static修饰的方法、属性,存储在jvm中的方法区,可以被其他进程共享,在运行过程中当中会优先加载,且类加载只会初始化一次。
在类加载中初始化顺序:
public class A {
public int x=3;
{
System.out.println("A的代码块");
}
static {
System.out.println("A的静态代码块");
}
public A() {
System.out.println("A的构造方法");
}
public void b() {
System.out.println("A:b");
}
}
public class B extends A{
public int x=3;
{
System.out.println("B的代码块");
}
static {
System.out.println("B的静态代码块");
}
public B() {
super();
System.out.println("B的构造方法");
}
public void a() {
System.out.println("A:a");
}
@Override
public void b() {
System.out.println("B:b");
}
public void test() {
B b =new B();
b.b();
System.out.println(b.x);
}
最后测试结果为
可见加载顺序为所有的静态方法,然后是父类的方法,之后是子类的方法,最后是各自的构造方法
使用static修饰的方法可以直接通过类名.方法名调用
final关键字
使用final修饰的变量属于常量,其值为只读类型,变量名需要大写
使用final修饰的方法不能被重写
使用final修饰的类不能被继承
例如String类就是使用final修饰的,不能被继承,且在定义数组时使用的是final修饰的,因此使用String的字符串都是不可变的。可变的只有StringBulider,StringBuffer
使用final修饰的属性只能被初始化一次
使用final修饰的引用类型不能解除绑定,但值可以改变。