编程语言
首页 > 编程语言> > java编程思想第四版第十四章 类型信息总结

java编程思想第四版第十四章 类型信息总结

作者:互联网

1. Class 对象:

    1、 类加载器首先检查这个类的Class对象是否已经加载。如果尚未加载,默认的类加载器就会根据类名查找.class文件。

    2、在这个类的字节码被加载是,他们会接收验证,以确保其没有被损坏。并且不包含不良代码。这时java中用于安全防范目的的措施之一。

    3、一旦某个类被加载,他就用来创建这个类的所有对象。

下面这个例子说明了一下两点:

1. 类何时被加载

2. 如何加载

package net.mindview.typeinfo;
/**
 * 首先, 下面的每一个类都有一个静态的代码块. 
 * 这个代码块, 在类第一次被加载时执行。
 * @author samsung
 *
 */

class Candy {
    static {
        System.out.println("Loading Candy!");
    }
}

class Gum {
    static {
        System.out.println("Loading Gum!");
    }
}

class Cookie {
    static {
        System.out.println("Loading Cookie!");
    }
}

public class SweetShop {

    public static void main(String[] args) {
        System.out.println("inside main");
        //第一次new的时候, 就加载了类Candy. 以后都是从这个类中创建实例对象
        new Candy();
        
        System.out.println("After creating Candy!");
        try {
            //Class.forName 获取对象引用的一种方法.参数是类的全限定文件名. 返回值是一个Class对象的引用.
            //如果Gum没有被加载, 那么这个类就会被加载.
            //使用类加载器加载类Gum, 在第一次加载Gum时, 也会主动去加载Gum这个类, 以后就从这个类中创建实例.
            Class.forName("Gum");
        } catch (ClassNotFoundException e) {
            System.out.println("Could`t find Gum");
        }
        
        System.out.println("After Class.forName(\"Gum\")");
        new Cookie();
        System.out.println("After creating Cookie");
        
        //这个例子展示, 第二次实例化Cookie是, static静态代码块没有被再次执行, 它只会在第一次加载时执行.
        new Cookie();
        System.out.println("After creating Cookie twice");
        
    }
}

 2. 类字面常量

  Toy.class

3.  泛化的class引用

package net.mindview.typeinfo;

public class WildcardCla***eferences {

    public static void main(String[] args) {
        /**
         * Class<?> 使用的时通配符来表示泛型.
         */
        Class<?> clazz = int.class;
        clazz = double.class;

    }

}

4. 反射

 

标签:java,类型信息,System,class,public,第四版,println,Class,out
来源: https://blog.51cto.com/u_15091061/2856402