Java 类中的初始化顺序一
来源:互联网 发布:aix 安装软件 编辑:程序博客网 时间:2024/05/21 17:04
public class Demo { public static String A = "静态变量"; public String B = "定义时给实例变量赋值"; public String C; static{ System.out.println("执行静态代码块前调用静态变量(只能调用静态变量):" + A); System.out.println("执行静态代码块"); A = "执行静态代码块时给静态变量赋值"; System.out.println("执行静态代码块后调用静态变量(只能调用静态变量):" + A); System.out.println("-----------------------------------------"); } { System.out.println("构造代码块执行前调用静态变量:" + A); System.out.println("构造代码块执行前调用定义时赋值的实例变量:" + B); System.out.println("构造代码块执行前调用定义时未赋值的实例变量:" + C); System.out.println("执行构造代码块"); A = "执行构造代码块时给静态变量赋值"; B = "执行构造代码块时给已赋值的实例变量赋值"; C = "执行构造代码块时给未赋值的实例变量赋值"; System.out.println("构造代码块执行后调用静态变量:" + A); System.out.println("构造代码块执行后调用定义时赋值的实例变量:" + B); System.out.println("构造代码块执行后调用定义时未赋值的实例变量:" + C); System.out.println("-----------------------------------------"); } public Demo(){ System.out.println("构造方法执行前调用静态变量:" + A); System.out.println("构造方法执行前调用定义时赋值的实例变量:" + B); System.out.println("构造方法执行前调用定义时未赋值的实例变量:" + C); System.out.println("执行构造方法"); A = "执行构造方法时给静态变量赋值"; B = "执行构造方法时给已赋值的实例变量赋值"; C = "执行构造方法时给未赋值的实例变量赋值"; System.out.println("构造方法执行后调用静态变量:" + A); System.out.println("构造方法执行后调用定义时赋值的实例变量:" + B); System.out.println("构造方法执行后调用定义时未赋值的实例变量:" + C); System.out.println("-----------------------------------------"); } public static void main(String[] args) { { System.out.println("执行普通代码块前调用静态变量(只能调用静态变量):" + A); System.out.println("执行普通代码块"); A = "执行普通代码时给静态变量赋值"; System.out.println("执行普通代码块后调用静态变量(只能调用静态变量):" + A); System.out.println("-----------------------------------------"); } new Demo(); }}
结果:
执行静态代码块前调用静态变量(只能调用静态变量):静态变量执行静态代码块执行静态代码块后调用静态变量(只能调用静态变量):执行静态代码块时给静态变量赋值-----------------------------------------执行普通代码块前调用静态变量(只能调用静态变量):执行静态代码块时给静态变量赋值执行普通代码块执行普通代码块后调用静态变量(只能调用静态变量):执行普通代码时给静态变量赋值-----------------------------------------构造代码块执行前调用静态变量:执行普通代码时给静态变量赋值构造代码块执行前调用定义时赋值的实例变量:定义时给实例变量赋值构造代码块执行前调用定义时未赋值的实例变量:null执行构造代码块构造代码块执行后调用静态变量:执行构造代码块时给静态变量赋值构造代码块执行后调用定义时赋值的实例变量:执行构造代码块时给已赋值的实例变量赋值构造代码块执行后调用定义时未赋值的实例变量:执行构造代码块时给未赋值的实例变量赋值-----------------------------------------构造方法执行前调用静态变量:执行构造代码块时给静态变量赋值构造方法执行前调用定义时赋值的实例变量:执行构造代码块时时给已赋值的实例变量赋值构造方法执行前调用定义时未赋值的实例变量:执行构造代码块时时给未赋值的实例变量赋值执行构造方法构造方法执行后调用静态变量:执行构造方法时给静态变量赋值构造方法执行后调用定义时赋值的实例变量:执行构造方法时给已赋值的实例变量赋值构造方法执行后调用定义时未赋值的实例变量:执行构造方法时给未赋值的实例变量赋值-----------------------------------------
初始化顺序:
静态变量—–>静态代码块—–>普通代码块—–>构造代码块—–>构造方法
0 0
- Java 类中的初始化顺序一
- Java类中的初始化顺序
- Java类中的初始化顺序
- Java类中的初始化顺序
- Java中的初始化顺序
- Java中的初始化顺序
- Java中的初始化顺序
- Java中的初始化顺序
- Java中的初始化顺序
- java中的初始化顺序
- 一、java类初始化顺序(转)
- Java类中的初始化顺序二
- java中的类的初始化顺序
- java中的类的初始化顺序详解
- Java类继承关系中的初始化顺序
- java中的代码初始化顺序
- Java中的继承初始化顺序
- Java中的初始化顺序详解
- QT访问Mysql数据库
- JAVA 反射机制
- 傅里叶变换的物理意义
- 牛顿迭代法求高精度开方
- 你不知道的JavaScript(五)内置对象模版
- Java 类中的初始化顺序一
- CornerStone简单配置及使用
- 3DES-待完善
- 文件保护 miniflter
- python 利用 setup.py 手动安装第三方类库 - cocoajin
- AVI 视频编码
- 仿新浪微博IOS客户端(v5.2.8)——搭建项目基本框架
- QPrinter 的 setPaperSize 方法似乎有 bug
- 《密码学原理与实践》ing