蓝水晶飞机
蓝水晶飞机 05/05 16:54
加载就是 defineClass,实例化就是 newInstance。
JVM ClassLoader 加载指定路径的类,加载到内存里面,并可能会执行这些类的 static 代码块。
newInstance 创建类的实例,为实例分配专用的内存。
JPer
JPer 05/05 16:41
有new才有加载
cion
cion 05/05 16:49
加载是找设计图纸,实例化是根据设计图纸造飞机。
星汉
星汉 05/05 16:56
具体来说,就是当你需要用到一个类的时候,JVM会预先将这个类加载到内存中,这个过程你是看不到的。实例化就是真用的new出了一个对象,就是将一个类具体到一个对象上。
举个例子,你要喝水,那么你会用水瓢从水缸里取出水来喝,JVM所干的事情就相当于替你取水到水瓢中,那么水缸就相当于你的硬盘,水瓢就相当于内存,你真正喝水的时候相当于实例化。你不喝水,那么水也是在水瓢中,当你喝的时候就可以直接喝了,也就是你可以直接new对象了。
风青山
风青山 05/05 16:58
加载类是查找并准备图纸,实例化是使用准备好的图纸新建对象。
非洲小白先生
非洲小白先生 05/06 15:08
总结起来时new对象的时候有两步:(1)类的加载;(2)实例化。
JVM(java虚拟机)会预先将类加载进内存,这个就是类的加载(你自己是看不到的)。
类的实例化,就是从类到具体的一个对象。
另外补充一下,使用getInstance()方法进行实例化类的时候不存在类的加载,类在之前就已经加载好了。如有错误,欢迎指正!