关于java初始化简介,只有主动调用时才初始化类

来源:互联网 发布:日本娱乐圈 知乎 编辑:程序博客网 时间:2024/06/12 00:17
/** *  */package com.bzu.csh;import java.util.Random;/** *  * 项目名称:Test1 类名称:Test2 类描述: 创建人:admin 创建时间:2017年1月7日 下午9:41:36 修改人:admin * 修改时间:2017年1月7日 下午9:41:36 修改备注: *  * @version *  */class Test4 {public static final int i = 6 / 2;// 编译时就处理了,即i =// 3;不初始化类,static代码块和静态初始化块不执行public static final int j = new Random().nextInt();// 运行时处理,需要初始化类,都执行static {System.out.println("static 静态代码块");}{System.out.println("初始化块");}}public class Test3 {/** * @param args *            2017年1月7日 */public static void main(String[] args) {System.out.println(Test4.i);}}

只有主动调用时才初始化类

/** *  */package com.bzu.csh;import java.util.Random;/** *  * 项目名称:Test1 类名称:Test2 类描述: 创建人:admin 创建时间:2017年1月7日 下午9:41:36 修改人:admin * 修改时间:2017年1月7日 下午9:41:36 修改备注: *  * @version *  */class Test6 {public static final int a = 6 / 2;// 编译时就处理了,即i = 3// 3;不初始化类,static代码块和静态初始化块不执行public static final int b = new Random().nextInt(10);// 运行时处理,需要初始化类,都执行static {System.out.println("Test6  static 静态代码块" + a + ":" + b);}{System.out.println("Test6  初始化块");}}class Test4 extends Test6 {public static final int i = 6 / 2;// 编译时就处理了,即i = 3// 3;不初始化类,static代码块和静态初始化块不执行public static final int j = new Random().nextInt(10);// 运行时处理,需要初始化类,都执行static {System.out.println("Test4  static 静态代码块" + i + ":" + j);}{System.out.println("Test4  初始化块");}}public class Test3 {/** * @param args *            2017年1月7日 */static {System.out.println("Test3");}public static void main(String[] args) {// Test4 t = new Test4();结果如下:执行了初始化块// Test3// Test6 static 静态代码块3:9// Test4 static 静态代码块3:0// Test6 初始化块// Test4 初始化块/***********************************************************/// System.out.println(Test4.j);// 这个不执行初始化块// Test3// Test6 static 静态代码块3:4// Test4 static 静态代码块3:8// 8/***********************************************************/System.out.println(Test4.b);// 不会初始化Test4,因为b定义在了Test6// Test3// Test6 static 静态代码块3:8// 8}}


0 0
原创粉丝点击