首先加载父类的静态字段或者静态语句块 子类的静态字段或静态语句块 父类普通变量以及语句块 父类构造方法被加载 子类变量或者语句块被加载 子类构造方法被加载 父类代码: public class ClassA { //父类 static int num = 5;//1.首先被加载 static { System.out.println("父类静态语句块已经被加载" + num)...
1.在执行 main 方法,也就是程序主入口的时候,首先会加载所在的类,声明静态变量,初始化静态属性,执行静态代码块(按照顺序执行),所以首先加载的是: public static int k = 0; 2.其次加载: public static Test t1 = new Test("t1"); 3.而加载到实例化 t1 对象时,类的加载会暂停,然后创建 Test 的实例对象。
parent static block child static block parent block parent constructor child block child constructor 分析:当执行new Child()时,它首先去看父类里面有没有静态代码块,如果有,它先去执行父类里面静态代码块里面的内容,当父类的静态代码块里面的内容执行完毕之后,接着去执行子类(自己这个类)里面的静态代码块,当...
类加载实际上由类加载器加载,这个加载器是ClassLoader 二.static (1)修饰变量 用static修饰变量,该变量成为类变量,用于给属于该类的所有对象共享。 1 内存位置 - 数据段 2 生命周期 - 从类加载开始就有了(实例变量生命周期从创建对象开始),static变量要比实例变量更早出现 3 使用范围 - 实例变量只能是拥有它的...
两段程序入口都是main,程序进入mian 后开始开始加载A类,加载过程中会给 a赋值, main函数结束,程序结束,释放内存,第二次又是一个新的类加载过程。 注意,如下特殊情况: 如下代码 Java代码packagetest01;classFinalStatic {publicstaticfinalintA = 4 + 4;static{ ...
1、static 代码块 语法: static{ 代码块; } 2、构造代码块: 语法: { 代码块 } 3、例程 Demo2.java 1 packageobject_static;2 /***3 *@authorKanekiyi4 * 1、static代码块在类加载前就被执行,只执行一次,一般用于视频/音频/图片的加载;5 * 2、构造代码块只能在创建对象时被调用,创建一次对象执行一次...
static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。 简单分的可以有这么几个类别 static 变量 static 方法 static 代码块 一、特点 1、随着类的加载而加载,优先于对象存在,不依赖于类的实例,被所有对象所共享,也就是说——static的成...
public class StaticTest { public static void main(String[] args) { staticFunction(); } static StaticTest st = new StaticTest(); // 此时 st 为 null static { System.out.println("1"); // 还未执行,这个会在<clinit>() 执行, 也就是类加载的初始化阶段 } { System...
Java中所有的Class都有一个classLoader属性,用来标明该类是由哪个类加载器加载的。在程序中获取一个类由哪个类加载器加载,可使用如下方式: SomeKlass.class.getClassLoader(); 下面举一个例子: publicclassClassLoaderDemo{publicstaticvoidmain(String[]args){System.out.println(String.class.getClassLoader());Syst...