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