概述
(一)类加载的情况:
1、创建对象实例的时候(new)
class A{ //静态代码块 static{ System.out.println("A 的静态代码块1被执行..."); } }
用对象实例(new)
A a=new A();
输出的结果是:A 的静态代码块1被执行...
2、创建子类对象实例,父类对象也会被加载
class B{ //静态代码块 static{ System.out.println("B 的静态代码块1被执行..."); } } class A extends B{ //静态代码块 static{ System.out.println("A 的静态代码块1被执行..."); } }
A a2=new A();
输出的结果是:B 的静态代码块1被执行...
A 的静态代码块1被执行...
3、使用类的静态成员(静态属性,静态方法)的时候
class Cat{ public static int n1=999;//静态的属性 //静态代码块 static{ System.out.println("Cat 的静态代码块1被执行..."); } }
System.out.println(Cat.n1);
输出的结果是:Cat 的静态代码块1被执行...
999 (说明:先执行静态代码块,在执行静态成员)
4、静态代码块在类加载的时候,只能被执行一次//普通代码块,类对象创建一次,调用一次
class D{ //静态代码块 static{ System.out.println("D 的静态代码块1被执行..."); } //普通代码块,在new对象时,被调用,而且是每一次创建一个对象,就会被调用一次 { System.out.println("D 的普通代码块...."); } public static int n1=8888;//静态属性 } D d = new D(); D d1 = new D(); 输出的结果是:D 的静态代码块1被执行... D 的普通代码块.... D 的普通代码块....
5、只是使用类的静态代码块,普通代码块并不会执行
class D{ //静态代码块 static{ System.out.println("D 的静态代码块1被执行..."); } //普通代码块,在new对象时,被调用,而且是每一次创建一个对象,就会被调用一次 { System.out.println("D 的普通代码块...."); } public static int n1=8888;//静态属性 } System.out.println(DD.n1);//静态代码块一定会被执行
输出的结果是: DD 的静态代码块1被执行...
8888
最后
以上就是动人画板为你收集整理的JAVA static的类加载情况 详解的全部内容,希望文章能够帮你解决JAVA static的类加载情况 详解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复