静态代码块、非静态代码块、构造函数的执行顺序
来源:互联网 发布:js防水材料施工工艺 编辑:程序博客网 时间:2024/09/21 09:22
public class ExA {
static {
System.out.println("父类--静态代码块");
}
public ExA() {
System.out.println("父类--构造函数");
}
{
System.out.println("父类--非静态代码块");
}
public static void main(String[] args) {
new ExB();
}
}
class ExB extends ExA {
static {
System.out.println("子类--静态代码块");
}
{
System.out.println("子类--非静态代码块");
}
public ExB() {
System.out.println("子类--构造函数");
}
}
执行结果
=====
父类--静态代码块
子类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
可是静态代码块真的会一定在非静态代码块之前执行吗?
下面这段代码
public class ExA {
private static ExA a = new ExA();
static {
System.out.println("父类--静态代码块");
}
public ExA() {
System.out.println("父类--构造函数");
}
{
System.out.println("父类--非静态代码块");
}
public static void main(String[] args) {
new ExB();
}
}
class ExB extends ExA {
private static ExB b = new ExB();
static {
System.out.println("子类--静态代码块");
}
{
System.out.println("子类--非静态代码块");
}
public ExB() {
System.out.println("子类--构造函数");
}
}
执行结果
=====
父类--非静态代码块
父类--构造函数
父类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
子类--静态代码块
父类--非静态代码块
父类--构造函数
子类--非静态代码块
子类--构造函数
=====
可以发现非静态代码块并不是一定在静态代码块之后执行的。
我认为此时private static ExA a = new ExA()是静态变量。
而java里面静态变量与静态代码块是按代码先后顺序执行。所以就导致非静态代码块在静态代码块之前执行。
- 静态代码块、非静态代码块、构造函数的执行顺序
- 静态代码块&非静态代码块&构造函数的执行顺序
- 举例说明java中静态代码块、非静态代码块、构造函数的执行顺序
- Java中静态代码块、非静态代码块和构造函数的执行顺序
- Java中静态代码块、非静态代码块、构造函数的执行顺序与作用
- java中静态代码块,非静态代码块,构造函数之间的执行顺序
- JAVA继承关系中静态代码块、非静态代码块,构造函数的执行顺序
- JAVA静态代码块、非静态代码块、构造函数的执行顺序
- 静态代码块,代码块,构造函数的执行顺序
- static静态代码块与非静态代码块与构造函数执行顺序
- 静态代码块,非静态代码块,构造函数,普通方法执行顺序
- 静态代码块、非静态代码块、构造函数三者执行顺序
- java 静态代码块 代码块 构造函数执行顺序
- 静态代码块、代码块、构造函数执行顺序
- Java继承中父类子类构造方法、静态代码块、非静态代码块的执行顺序
- 父类子类构造方法、静态代码块、非静态代码块的执行顺序
- 举例说明构造代码块、静态、非静态代码块的执行顺序
- Java中静态代码块、非静态代码块、构造方法三者的执行顺序
- 有关linux内核面试题
- Android中自定义Dialog外形,去除黑底和白色边框
- RGB生成 UIColor对象
- 10个迷惑新手的Cocoa,Objective-c开发难点和问题
- 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/>
- 静态代码块、非静态代码块、构造函数的执行顺序
- redhat server 5.4 64 bit 下安装 RealTek RTL8111E 网卡
- BigInteger类型是不可变的(String)
- Selenium开源自动化测试框架KDATFFS
- UTF-8文字コード
- log4j.properties配置详解
- 在.NET使用JSON作为数据交换格式
- VS2008制作CAB安装包—以给予windows ce 系统的手持机开发为例进行实验
- MiniGUI源码分析--hellowworld(2):主窗口诞生的秘密