在进行Class.forName("com.TestOne")的时候,实际上是对heima.TestOne进行类加载,这时候,会把静态属性、方法以及静态代码块都加载到内存中。所以这时候会打印出"静态代码块运行"。但这时候,对象却还没有产生。所以"构造方法"这几个字不会打印。当执行cla.newInstance()的时候,就是利用反射机制将Class对象生成一个该类的一个实例。这时候对象就产生了。所以打印"构造方法"。当执行到TestOnetwo=new TestOne()语句时,又生成了一个对象。但这时候类已经加载完毕,静态的东西已经加载到内存中,而静态代码块只执行一次,所以不用再去加载类,所以只会打印"构造方法",而"静态代码块运行"不会打印。
黑马李昂 发表于 2013-8-6 23:00
代码分析:
在进行Class.forName("com.TestOne")的时候,实际上是对heima.TestOne进行类加载,这 ...
哪颗最亮的星星 发表于 2013-8-6 23:11
首先要明确的是静态代码块和构造代码块的作用,它们分别是给类进行初始化以及给所有对象进行初始化 。哪么 ...
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |