个人学习总结:
1.含有static的静态代码块和类变量先执行,执行一次之后就不再需要加载,静态代码块和类变量没有特定的先后顺序,按照代码顺序执行
2.如果类之间存在继承关系,先加载父,在加载子的内容
3.单独一个类的加载顺序应该是,静态代码块(类变量)--------成员变量-----------构造方法
注:静态方法是调用才会执行
测试代码:
public class Girl {
Person person = new Person("Girl");
static{
System.out.println("Girl static");
}
static Person staticPerson = new Person("GirlStaticPerson");
public Girl() {
System.out.println("Girl constructor");
}
public static void main(String[] args) {
new MyGirlFriend();
}
}
class Person{
static{
System.out.println("person static");
}
static Person staticPerson = new Person("PersonStaticPerson");
public Person(String str) {
System.out.println("person "+str);
}
}
class MyGirlFriend extends Girl {
Person person = new Person("MyGirlFriend");
static Person myStaticPerson = new Person("MyStaticPerson");
static{
System.out.println("MyGirlFriend static");
}
public MyGirlFriend() {
System.out.println("MyGirlFriend constructor");
}
}
输出结果:
Girl static
person static
person PersonStaticPerson
person GirlStaticPerson
person MyStaticPerson
MyGirlFriend static
person Girl
Girl constructor
person MyGirlFriend
MyGirlFriend constructor
学习下方博客,感觉他对加载顺序总结的很好:先静后非,先父后子,先块后器。
个人学习记录,如有侵权,会主动删除该文章。
参考资源:java static 加载顺序_一个例子搞清楚Java类加载顺序_愿水长流的博客-CSDN博客
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)