当前位置: 代码迷 >> J2SE >> static块和mian函数,该如何处理
  详细解决方案

static块和mian函数,该如何处理

热度:36   发布时间:2016-04-24 02:06:35.0
static块和mian函数
在java中,程序一开始加载的时候,首先加载了静态的static的代码段的程序,而且,无论static代码段放在什么位置,都会首先加载的。为什么是这样子??求解 还有,java的代码是怎样执行的(顺序)???感激.....

------解决方案--------------------
对象的初始化顺序:一开始执行父类的静态代码块,接着执行子类的静态代码块
------解决方案--------------------
static是内存静态块,用于全局共享,所以在执行MAIN()函数之前,你会加载,你可以设个断点调试一下的,看一下具体情况
------解决方案--------------------
你可以设个断点调试一下的,看一下具体情况
------解决方案--------------------
Java创建对象完整过程!

[分配父类静态变量存储空间]
父类静态初始化块
[分配子类静态变量存储空间]
子类静态初始化块
[分配父类非静态变量存储空间]
父类非静态初始化块
父类构造方法
<-- 父类对象创建完毕 -->
[分配子类非静态变量存储空间]
子类非静态初始化块
子类构造方法
<-- 子类对象创建完毕 -->

当new一个对象的时候先执行父类中的static{}代码块,然后执行子类中的static{}代码块,
------解决方案--------------------
通过下面的代码,可以清晰的表现出来
Java code
public class InitExec{    public static void main(String[] args){        B baby = new B();    }}class A{    {        System.out.println("A类的非静态初始化块");    }    public A(){        System.out.println("A类的构造方法");    }    static{        System.out.println("A类静态初始化块");    }}class B extends A{    static{        System.out.println("B类的静态初始化块");    }    {        System.out.println("B类的非静态初始化块");    }    public B(){        System.out.println("B类的构造方法");    }}
------解决方案--------------------
static是内存静态块,用于全局共享,所以在执行MAIN()函数之前,你会加载,你可以设个断点调试一下的,看一下具体情况
  相关解决方案