码迷,mamicode.com
首页 > 其他好文 > 详细

JVM 主动类和被动类的使用

时间:2019-06-07 22:58:38      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:static   oid   pre   输出   inf   ace   str   ons   ext   

主动使用和被动使用Demo

1、创建工程一个Gradle工程

技术图片

下一步

技术图片

下一步

技术图片

点击完成

 

2、创建类

public class MyTest1 {


    public static void main(String[] args) {
        System.out.println(MyChild1.str);
    }
}


class MyParent1{
    public static String str = "hello world";

    static {
        System.out.println("MyParent1 static block");
    }
}

class MyChild1 extends  MyParent1{
    static {
        System.out.println("MyChild static block");
    }
}

  输出结果:

MyParent1 static block
hello world

  会发现MyChild1的类静态块没有执行。

  总结:对于静态字段来说,只有直接定义了该字段的类才会被初始化。

 

 修改后的类:

public class MyTest1 {


    public static void main(String[] args) {
        System.out.println(MyChild1.str2);
    }
}


class MyParent1{
    public static String str = "hello world";

    static {
        System.out.println("MyParent1 static block");
    }
}

class MyChild1 extends  MyParent1{

    public static String str2 = "hello world 2";

    static {
        System.out.println("MyChild static block");
    }
}

  执行结果

MyParent1 static block
MyChild static block
hello world 2

 因为使用到了MyChild的类,它会被初始化。当一个类在初始化时,要求其父类全部都已经初始化完毕。最终打印结果如上面所示。 

 

3、上面1中,MyChild1没有被实例化,那MyChild类是否有被加载?

-XX:+TraceClassLoading, 用于追踪类的加载信息并打印出来
配置如下:

技术图片

完整的代码

public class MyTest1 {


    public static void main(String[] args) {
        System.out.println(MyChild1.str);
    }
}


class MyParent1{
    public static String str = "hello world";

    static {
        System.out.println("MyParent1 static block");
    }
}

class MyChild1 extends  MyParent1{

    public static String str2 = "hello world 2";

    static {
        System.out.println("MyChild static block");
    }
}

  

 

打印的结果

技术图片

说明MyChild类也会被加载, 最先加载的是MyTest1类

 

JVM参数

-XX:+<option>, 表示开启option选项

-XX:+<option> 表示关闭options选项
-XX:<option>=<value>, 表示将option选项的值设置为value

 

 

JVM 主动类和被动类的使用

标签:static   oid   pre   输出   inf   ace   str   ons   ext   

原文地址:https://www.cnblogs.com/linlf03/p/10989141.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!