zoukankan      html  css  js  c++  java
  • java面试一日一题:讲下在什么情况下会发生类加载

    问题:请讲下在什么情况下会发生类加载?

    分析:该问题主要考察对java中类加载的知识,什么是类加载,为什么会发生类加载,什么情况下发生类加载?

    回答要点:

    主要从以下几点去考虑

    1、什么是类加载;

    2、为什么会发生类加载;

    3、什么情况下发生类加载;

    大家都知道java程序要运行,必须要把源文件(.java)编译成字节码(.class),jvm的输入是字节码文件,需要把字节码文件加载到jvm内存中,如何解析字节码文件,按照什么样的规则去解析,解析后放在内存中的什么位置,这些过程可以理解未类加载。通俗点讲,一个java文件要运行必须通过类加载的过程,转化为JVM可以识别的数据结构。在JVM中规定了加载的步骤,可参考:《java面试一日一题:java的类加载过程

    至于为什么会发生类加载的过程,那肯定是要运行java程序,因为java源程序JVM是不可识别的,编译后的字节码文件JVM可以识别,但是也要转化成JVM可以识别的数据结构,所以要有类加载的过程;

    java程序对类的使用分为主动使用和被动使用,只有主动使用才会发生类的加载,下面看发生类加载的情形,

    1、访问类的静态变量,如果类没有加载,则首先会执行类加载;

    2、访问类的静态方法,如果类没有加载,则首先会执行类加载;

    3、初始化一个类的子类的时候,如果子类没有加载,则首先执行子类的加载;

    4、使用new关键字,生成一个对象,如果该类没有加载,则首先加载该类;

    5、使用反射,Class.forName();如果该类没有加载,则执行该类的加载;

    6、标记为启动类的类,如果没有加载则首先执行该类的加载,常见的是main方法所在的类;

    7、1.7提供的动态语言支持;

    一个爱写文章的程序员,欢迎关注我的公众号“北漂程序员”。我有故事,你有酒吗
  • 相关阅读:
    修改Mysql5.7的root密码
    PHP---练习-----留言板
    PHP----练习------球队列表
    PHP---------ajax
    PHP------Jquery的用法
    PHP-----JSOM类型数据
    PHP-------- JQUERY方式
    PHP-------PDO:数据访问抽象层
    PHP-----练习-------租房子-----增删改查,多条件查询
    PHP------练习------投票
  • 原文地址:https://www.cnblogs.com/teach/p/14695687.html
Copyright © 2011-2022 走看看