您的位置:首页 > 其它

自己写的一道题

2014-02-14 09:59 155 查看
参考帖子:http://bbs.csdn.net/topics/390207040

1、JVM在运行class时,首先会扫描一次全部的程序,静态块优先级最高,因为它们会存储在JVM的公共内存区域。

2、接着会调用构造方法,构造方法调用的顺序是,JVM会先扫描类的继承关系,然后从最顶层的构造方法向下执行。
3、执行到指定类内部时,会先处理类中定义的实例变量,然后再执行构造方法内部的代码。

class A
{
static
{
System.out.println("A静态代码块");
}
{
System.out.println("A构造块");
}

public A(int a)
{
System.out.println("A构造方法:" + a);
}
}
class B extends A
{
static A aa = new A(1);

A aaa = new A(2);

static
{
System.out.println("B静态代码块");
}

{
System.out.println("B构造块");
}

public B(int a)
{
super(a);
System.out.println("B构造方法:" + a);
}
}

public class Test1
{
public static void main(String[] args)
{
new B(100);
}
}
/*
结果:
A静态代码块
A构造块
A构造方法:1
B静态代码块
A构造块
A构造方法:100
A构造块
A构造方法:2
B构造块
B构造方法:100
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jvm