JVM学习(一)

JVM的几个规范:

    允许类加载器在预料某各类将要被使用时就预先加载它,如果在预先加载的过程中遇到了.class文件缺失或者存在错误,类加载器必须在程序首次主动使用该类时才报告错误。如果这个类一直没被程序主动使用,类加载器就不会报告错误。

    类的实例化是从上到下执行的。

    初始化类的时候,类里面的静态代码就必须得执行。

     实例代码如下:

    

    执行main方法的时候,要初始化myTest类,然后执行实例化singleton类。执行singleton类的时候,先声明new一个singleton类。所以先执行singleton类的构造函数,得到counter1=1;counter2=1。然后再走下面的赋值的代码,所以最后的执行结果是counter1=1;counter2=0。

    但是如果把new singleton的代码放到给counter1和couter2赋值的代码之后,那就根据从上到下的原则,是先赋值,然后再实例化singlton类调用构造函数。所以最后结果就变成了counter1=1;counter2=1;


     当Java虚拟机初始化一个类的时候,要求它的所有父类都已经被初始化,但是此规范不适合用于接口。

    


     java.lang.ClassLoader类是一个对象,它是负责加载类。这个类是一个抽象类。它可用于安全管理器的,表示安全域。

     ClassLoader类不能实例化,但是我们可以调用ClassLoader类的loadClass方法加载一个类,用它加载的类不是对类的主动使用,不会导致类的初始化。

实例如下:




      就学了这么一点,先总结这么一点,后边继续。





评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值