今天看啥
热点:

Class.forName()+Class.forName().newlnstance()和new语句和初始化块+static初始化块+构造方法之间的关系,


先上代码

class A{
    int a;
    static {System.out.println("载入类时执行");}
    public A() {
        System.out.println("我虽然写在初始化块前但是实际先执行初始化块里的内容再执行我");
        
    }
    {System.out.println("先执行我!");}
}
public class Html {
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException{
        Class O=Class.forName("A");
        Class P=Class.forName("A");
        O.newInstance();
        A i=new A();
        A o=new A();
    }
}

 

代码执行结果是

载入类时执行

先执行我!

我虽然写在初始化块前但是实际先执行初始化块里的内容再执行我

先执行我!

我虽然写在初始化块前但是实际先执行初始化块里的内容再执行我

先执行我!

我虽然写在初始化块前但是实际先执行初始化块里的内容再执行我

参考文章

http://www.cnblogs.com/xingzc/p/5760166.html

http://www.cnblogs.com/wangxin37/p/6397742.html

 

newlnstance()是一个方法

new是一个关键字

Class下的newlnstance()的使用有局限他只能调用无参的构造函数

new关键字生成对象(类的实例)没有这个限制

Class..forName()返回的是一个类

Class.forName().newlnstance()返回的是Object(类的实例)

 

 

初始化块

和构造方法一样用于初始化对象(赋值);

一个初始化块是在类中由一段花括号括起来的

它的作用就是想是把他放在类中每个构造方法最开始的位置

Static初始化块

和构造块的区别是声明中带有STATIC外,其它和初始化块一样。当类加载时执行,只能引用static成员

 

www.bkjia.comtruehttp://www.bkjia.com/Javabc/1231381.htmlTechArticleClass.forName()+Class.forName().newlnstance()和new语句和初始化块+static初始化块+构造方法之间的关系, 先上代码 class A{ int a; static {System.out.println("载...

相关文章

相关搜索: static

帮客评论

视觉看点