展开全部
不是先执行静态e5a48de588b662616964757a686964616f31333332636363代码快。
当调用静态方法时,首先执行静态类属性,static代码块也相当于一个类属性(我是这样理解的);执行的顺序是你属性的排列顺序。当第一次调用静态属性或静态方法以及第一次创建对象时,都会初始化静态属性,分配内存,而且以后不再初始化。如下例:package edu.hu.my;
public class Demo4
{
public static Demo4_1 d1 = new Demo4_1(1);
public static Demo4_1 d2 = new Demo4_1(2);
public static void f()
{
System.out.println("。。。。。");
}
public static void main(String[]args)
{
System.out.println("..."+Demo4.d2+"...");
Demo4.f();
}
}
class Demo4_1
{
public Demo4_1(int i)
{
System.out.println(i++);
}
}
输出:1
2
...edu.hu.my.Demo4_1@15bdc50...
。。。。。
当第一次调用静态属性d2时初始化,所有静态属性;再调用方法f()时,就没有再初始化了。
本文通过一个具体的Java示例解释了静态成员变量和静态方法的初始化顺序。当第一次调用静态成员时,所有静态成员都会被初始化,并且只会发生一次。

被折叠的 条评论
为什么被折叠?



