关于JAVA的问题,很不解

pacman 发布于 2013/08/08 21:27
阅读 342
收藏 0
class Test {
	static Test test = new Test();
	static int a1;
	static int a2 = 1;
	
	

	Test() {
		a1++;
		a2++;
	}

	public static void main(String[] args) {
		
		System.out.println("a1=" + a1 + ",a2=" + a2);
	}

}
很不解,为什么输出的是a1=1,a2=1
加载中
0
SeekerLee
SeekerLee

执行顺序:

1. 载入类Test,载入类的时候要初始化所有静态代码/变量。

2. 按顺序,初始化test这个静态成员变量,在执行new Test()的时候,进入构造方法

3. 构造方法里面发现有a1,a2初始化他们为0,执行++操作,都变成了1

4. test这个静态成员变量初始化完成,按顺序初始化a1,a2.

5. 初始化a1的时候,发现已经初始化了,于是跳过。a1的值没有变更,仍为1。

6. 初始化a2的时候,虽然a2已经初始化了,但是赋值为1这个操作还是要做的,a2在此被赋值为1。

7. 类初始化完成执行main。

pacman
pacman
回复 @SeekerLee : 明白大概流程是怎么样的了,谢谢。
SeekerLee
SeekerLee
题目其实没啥实际意义,看看就行了我觉得,不必过于纠结。
返回顶部
顶部