zoukankan      html  css  js  c++  java
  • java_类加载器的简述

    1.类加载器的作用

    Java类加载器是Java运行时环境的一部分,负责动态加载Java类到 Java虚拟机的内存空间中。

    类通常是按需加载,即第一次使用该类时才加载。

    一个应用程序总是由多个类组成,Java程序启动时并不是一次把所有的类全部加载后再运行。

    它总是先把保证程序运行的基础类一次性加载到jvm中,由于有了类加载器,所以Java运行时系统不需要知道文件与文件系统,其它类等到jvm用到的时候再加载,这样的好处是节省了内存。

    因为java最早就是为嵌入式系统而设计的,内存宝贵,这是一种可以理解的机制,而用到时再加载这也是java动态性的一种体现。

    2.类加载器的使用

    那么类加载器需要这么使用呢:

    class Base{
    static int a = 1;
    static {
    System.out.println("init Base!");
    }
    }
    class Sub extends Base {
    static int b = 2;
    static {
    System.out.println("init Sub!");
    }
    }
    public class zuoye2 {
    static {
    System.out.println("init zuoye2!");
    }
    /**
    * @param args
    */
    public static void main(String[] args) {
    //调用base类的变量a
    System.out.println("a:"+Base.a);
    //调用sub类中的b
    System.out.println("b:"+Sub.b);
    System.out.println("a:"+Base.a);
    System.out.println("b:"+Sub.b);
    int[] array1 = new int[3];
    System.out.println(array1.getClass());
    System.out.println(int[].class);
    int[] array2 = new int[3];
    System.out.println(array2.getClass());
    //比较两个类的区别
    System.out.println(array2.getClass()==array1.getClass());
    int[][] array3 = new int[2][3];
    //比较两个类的区别
    System.out.println(array3.getClass()==int[][].class);

    }

    }
    运行结果:





    当程序运行时会先加载静态块里的代码,如何再执行主程序。当前没用到的类并不会去加载静态块里面的代码。



  • 相关阅读:
    8.11 hdu 多校第五场补题
    8.10 trie树模板
    8.6 edu25 ,577#div2 CF补题(二分 ,dp 与 贪心
    8.4 POJ 3237 (树链剖分+线段树
    8.4 poj 2763 Housewife Wind (树链剖分边权处理
    8.4 树链剖分
    8.3 树链剖分
    2019 hdu 第四场补题 (2
    2019 hdu 第四场补题 (1 ,签到题
    51NOD 1137 矩阵乘法
  • 原文地址:https://www.cnblogs.com/dxgld/p/13537312.html
Copyright © 2011-2022 走看看