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

分析:该问题主要考察对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提供的动态语言支持;

最新文章

  1. 全面解析sizeof(下) 分类: C/C++ StudyNotes 2015-06-15 10:45 263人阅读 评论(0) 收藏
  2. Grand Central Dispatch (GCD)
  3. android应用中去掉标题栏的方法
  4. Java Hour 16 来个CURD吧!
  5. web网站加速之CDN(Content Delivery Network)技术原理
  6. C# Attribute (上)——Attribute初体验
  7. freemarker声明变量
  8. URL参数中有 特殊符号或加密数据 的问题解决
  9. HashMap----工作原理
  10. FreeMarker生成word的代码
  11. Supervisor的作用与配置
  12. Java并发编程73道面试题及答案 —— 面试稳了
  13. 将一台电脑上的虚拟机上的系统复制到另一台电脑的虚拟机上!!!and想询问大神们问题的解决办法??
  14. 打开和写入word文档
  15. 《DSP using MATLAB》Problem 5.2
  16. divide_3
  17. tornado登陆装饰器
  18. Gym - 101020H Weekend floyd+next_permutation
  19. Android-Java-了解编译
  20. Oracle连接步骤

热门文章

  1. c# 全选和批量修改
  2. 死磕以太坊源码分析之EVM固定长度数据类型表示
  3. 微信小程序(六)-项目实例(原生框架 MINA基配搭建)==01-头搜索框tabbar
  4. 第七届蓝桥杯JavaB组——第6题方格填数
  5. Django框架的forms组件与一些补充
  6. apiAutoTest:支持自定义函数,用例中可调用
  7. PCA主成分分析的矩阵原理
  8. Linux自学之旅-基础命令(chown和chgrp)
  9. 如何快速开发Winform应用系统
  10. Nebula Storage 2.0 存储格式