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提供的动态语言支持;

    一个爱写文章的程序员,欢迎关注我的公众号“北漂程序员”。我有故事,你有酒吗
  • 相关阅读:
    POJ 1015 Jury Compromise【DP】
    POJ 1661 Help Jimmy【DP】
    HDU 1074 Doing Homework【状态压缩DP】
    HDU 1024 Max Sum Plus Plus【DP,最大m子段和】
    占坑补题。。最近占的坑有点多。。。
    Codeforces 659F Polycarp and Hay【BFS】
    Codeforces 659E New Reform【DFS】
    Codeforces 659D Bicycle Race【计算几何】
    廖大python实战项目第四天
    廖大python实战项目第三天
  • 原文地址:https://www.cnblogs.com/teach/p/14695687.html
Copyright © 2011-2022 走看看