您好,欢迎访问一九零五行业门户网

类加载的初始化和不初始化有何区别(类加载的初始化和不初始化哪个好)

本文主要介绍类加载的初始化和非初始化有什么区别(哪个更好?),下面一起看看类加载的初始化和非初始化有什么区别(哪个更好?)相关资讯。
初始化
1.当遇到四个字节码指令:new、getstatic、putstatic或invokestatic时,如果类没有初始化,应该先触发。生成这四条指令的常见java代码场景有:用new关键字实例化对象时,读取或设置类的静态字段(用final修饰,除了已经被编译器放入常量池的静态字段)时,调用类的静态方法时。
2.使用java.lang.reflect包的方法对类进行反射调用时,如果类还没有初始化,需要先触发其初始化。
3.在初始化一个类的时候,如果发现其父类还没有初始化,就需要先触发其父类的初始化。
4.虚拟机启动时,用户需要指定一个要执行的main类(包括main方法的类),虚拟机会先初始化这个类。
不会初始化。
父类
包com . zou . test9e;
公共类f {static {system。out . println( 加载父类 );} public static int num = 10}
子类
包com . zou . test9e;
公共子类扩展f {static {system。out . println( 加载子类 );} public static final int a = 20}
1.-父类的静态字段被子类引用,子类不会被初始化。
包com . zou . test9e;
公共类main {
public static void main(string[]args){//todo自动生成方法stub system . out . println(child . num);
}
}
2.-通过数组定义引用类。
包com . zou . test9e;
公共类main {
public static void main(string[]args){//todo自动生成的方法存根。
child[]c =新的子级[10];
}
}
3.-调用类的常数
package com.zou.test9e
公共类main {
public static void main(string[]args){//todo自动生成的方法存根。
system . out . println(child . a);
}
}
标签:
初始化子类
了解更多类加载的初始化和非初始化有什么区别(哪个更好?)相关内容请关注本站点。
其它类似信息

推荐信息