zoukankan      html  css  js  c++  java
  • loadClass和forName 的区别

    类的加载方式

    1、隐式加载:new

    2、显式加载,loadClass,forName 等

    loadClass 和 forName的区别

    类的装载过程

    1、加载:通过classLoader加载class文件字节码,生成Class对象,将这些数据放到运行时数据区的方法区中,在运行时,在数据区堆中生成一个代表该类的java.lang.class的字节码文件,这个文件会被用来当做访问入口

    2、链接:

    2.1 校验: 检查加载的class的正确性和安全性(检查格式)

    2.2 准备:为类变量分配存储空间并设置变量初始值

    2.3 解析:JVM将常量池内的符号引用转换为直接引用(这个步骤是不是必须的)

    3、初始化:执行类变量赋值和静态代码块

    forName---》调用这个方法的话,会进行初始化的,则会执行类变量赋值和静态代码块。例如:Class.forName("com.mysql.jdbc.Driver") ,点进去Driver代码里面看,就知道,里面是有写静态代码块的。

    loadClass---》不会进行初始化步骤。例如:spring ioc 中大量使用了懒加载,这个时候大量是哦也能改了loadClass。存在就是合理的

  • 相关阅读:
    ASP连接mysql
    jsp中动态include与静态include的区别
    Create & Post free text invoice by code
    自定义Form作为Dialog
    动态多关联查询
    转到主表窗口
    获取当前用户组
    一个Job调用另外一个Job
    保存图片到硬盘
    在编辑框中增加右键菜单
  • 原文地址:https://www.cnblogs.com/vingLiu/p/10538541.html
Copyright © 2011-2022 走看看