日期:2014-05-20  浏览次数:20877 次

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()函数之前,你会加载,你可以设个断点调试一下的,看一下具体情况