当前位置:编程学习 > JAVA >>

JAVA基础--final、static区别以及类加载顺序

 

一、JAVA中final 与static 总结

 

 

final

static

修饰类

该类不可被继承

只能修饰内部类,该类不需要new,是静态加载(嵌套顶层类)

修饰接口

×

×

修饰构造函数

×

×

修饰语句块

×

虚拟机按声明顺序初始化static成员字段和static语句块

修饰字段属性

表示属性初始化后不能修改(实例常量)

是类变量,所有实例共享该变量值(类变量)

在定义时或构造函数中赋值(每个实例拥有一份拷贝)

修饰方法

该方法不能被覆盖(只可继承)

是类方法,所有实例共享该方法(类方法)

修饰函数参数

参数值不能被函数修改

×

修饰函数局部变量

局部变量初始化后不能修改(局部常量)

×

 

 

 

用途

1).为了防止方法被覆盖或改写;

1).定义全局变量或常量;

2).提高运行效率,JAVA对final方法调用采用内嵌机制;

2).定义类方法;

 

 

 

二、JAVA类加载顺序

JAVA类加载顺序:

1).按代码顺序递归加载静态成员/代码块,先父类再本类;

 

2).按代码顺序递归加载非静态成员/代码块,先父类再本类;

 

3).按代码顺序递归调用构造函数,先父类再本类;

 

 

JAVA类加时机:

1).调用静态成员时,加载静态成员所在的类及父类;

 

2).第一次new对象时加载(第二次new不再加载)

 

3).加载子类会先加载父类.有static和final修饰的成员不会被加载;当成常量使用;

本文出自 “坐看云起时” 博客

 

补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,