Java(静态)变量和(静态)代码块的执行顺序
来源:互联网 发布:我的世界pe拔刀剑js 编辑:程序博客网 时间:2024/06/05 22:59
本文讨论Java中(静态)变量、(静态)代码块的执行顺序
首先创建3个类:
1、Foo类,用于打印变量
public class Foo { public Foo(String word) { System.out.println(word); }}
2、Parent类
public class Parent { static Foo FOO = new Foo("Parent's static parameter"); Foo foo = new Foo("Parent's parameter"); static { System.out.println("Parent's static code block"); } { System.out.println("Parent's code block"); } public Parent() { System.out.println("Parent.Parent()"); }}
3、Child类
public class Child extends Parent{ static Foo FOO = new Foo("Child's static parameter"); Foo foo = new Foo("Child's parameter"); static { System.out.println("Child's static code block"); } { System.out.println("Child's code block"); } public Child() { System.out.println("Child.Child()"); }}
接下来运行实例:
public class Run { public static void main(String[] args) { new Child(); }}
打印结果:
Parent's static parameterParent's static code blockChild's static parameterChild's static code blockParent's parameterParent's code blockParent.Parent()Child's parameterChild's code blockChild.Child()
总结
Java中的静态变量和静态代码块是在类加载的时候就执行的,实例化对象时,先声明并实例化变量再执行构造函数。如果子类继承父类,则先执行父类的静态变量和静态代码块,再执行子类的静态变量和静态代码块。同样,接着在执行父类和子类非静态代码块和构造函数。
注意:(静态)变量和(静态)代码块的也是有执行顺序的,与代码书写的顺序一致。在(静态)代码块中可以使用(静态)变量,但是被使用的(静态)变量必须在(静态)代码块前面声明。
最后给出执行步骤:
1、父类静态变量和静态代码块(先声明的先执行);
2、子类静态变量和静态代码块(先声明的先执行);
3、父类的变量和代码块(先声明的先执行);
4、父类的构造函数;
5、子类的变量和代码块(先声明的先执行);
6、子类的构造函数。
0 0
- Java(静态)变量和(静态)代码块的执行顺序
- 静态变量和静态代码块的执行顺序
- static 静态变量和静态代码块的执行顺序
- Java中(静态)变量、(静态)代码块的执行顺序
- Java中(静态)变量、(静态)代码块的执行顺序
- java静态和非静态代码块的执行顺序
- java 静态代码块、静态变量、成员变量、构造代码块、构造方法的执行顺序
- Java静态代码块 静态变量执行顺序
- Java 静态代码块和Main函数的执行顺序
- Java中静态代码块、非静态代码块和构造函数的执行顺序
- java的静态变量,静态代码块和静态变量
- 【JAVA】探究JAVA父类子类静态代码块、静态变量、构造方法的执行顺序
- Java静态变量 静态代码块 主函数 成员变量 构造代码块 构造函数的执行顺序
- Java 静态变量、非静态代码块、构造函数的执行顺序
- 探究JAVA父类子类静态代码块、静态变量、构造方法的执行顺序
- JAVA父类子类静态代码块、静态变量、构造方法的执行顺序
- JAVA父类子类静态代码块、静态变量、构造方法的执行顺序
- 静态成员变量静态代码块和构造方法的执行顺序
- ROS Navigation 学习之Clear_Costmap_Recovery
- react的工作原理
- Android中Serializable和Parcelable序列化对象详解
- IOS之数据持久化大全
- Spark性能优化之道——解决Spark数据倾斜(Data Skew)的N种姿势
- Java(静态)变量和(静态)代码块的执行顺序
- 历经8年双11流量洗礼,淘宝开放平台架构和技术难点解密
- java 反射通过get方法获得属性值
- vim 匹配 替换 删除
- SpringMVC常用的配置和注解
- java equal和==的比较
- 分布式数据收集:(Flume原理与应用)
- 测试
- out.flush(); out.close()问题