我是靠谱客的博主 动人画板,最近开发中收集的这篇文章主要介绍JAVA static的类加载情况 详解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

(一)类加载的情况:

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的类加载情况 详解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部