博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java类加载的几种方式
阅读量:2216 次
发布时间:2019-05-07

本文共 417 字,大约阅读时间需要 1 分钟。

回顾下java基础、很多人可能不知道java中类加载的过程,记得很久以前面试被问过一道面试题如下:

Q:类的加载有几种方式?
  • new
  • Class.forName()
  • ClassLoader.loadClass()
Q:调用ClassLoader.loadClass()的时候jvm做什么事情?
  • 这个时候只是把该类加载到jvm中并对它进行了格式校验,并解析该文件,分配内存并赋值默认值,并且将符号引用替换成直接引用(内存地址)。
Q:这个时候再调用Class.forName()做了什么事情?
  • 这个时候由于类已经载入,所以不会再次进行加载,所以这个时候会检查类是否加载如果已加载则就初始化。初始就是执行静态代码块初始化。
Q:那么假如我定义了一个public int a=10什么时候这个a=10呢?
  • 实例化的时候,用newInstance()的时候才开始赋值的,这也就是为什么static中不能引用外部非staic变量或者方法的原因。

转载地址:http://spkfb.baihongyu.com/

你可能感兴趣的文章
【C++】构造函数中必须通过初始化列表来进行初始化情况
查看>>
【算法】对于大数的操作
查看>>
【操作系统】系统调用的概念
查看>>
【计算机网络】cookie和session的区别
查看>>
【C++】构造函数、析构函数抛出异常的问题
查看>>
【C++】关于vector<bool>
查看>>
【操作系统】内存碎片产生原因及终极解决办法
查看>>
幂等性验证思想
查看>>
DB理论--数据存储方式
查看>>
PB协议的说明与使用
查看>>
什么是TPS,什么是QPS,区别是什么?
查看>>
git pull遇到错误:error: Your local changes to the following files would be overwritten by merge:
查看>>
arraylist扩容时机java8
查看>>
logback中additivity的理解
查看>>
一篇文章搞懂hash,hashcode,equals,==的用法
查看>>
mysql数据库,悲观锁。for update 的用法。
查看>>
springboot+jta+atomikos多数据源和 springboot+mybatisplus+aop实现数据库读写分离而引发的一些思考
查看>>
java面试中常考的一些面试sql语句
查看>>
一个字节等于多少位?
查看>>
帧框架frameset的用法总结
查看>>