Java多线程编程核心技术(第3版)
上QQ阅读APP看书,第一时间看更新

2.2.13 类对象的单例性

每一个*.java文件都对应一个类(Class)的实例,在内存中是单例的,测试代码如下:


class MyTest {
}

public class Test {
public static void main(String[] args) throws InterruptedException {
    MyTest test1 = new MyTest();
    MyTest test2 = new MyTest();
    MyTest test3 = new MyTest();
    MyTest test4 = new MyTest();

    System.out.println(test1.getClass() == test1.getClass());
    System.out.println(test1.getClass() == test2.getClass());
    System.out.println(test1.getClass() == test3.getClass());
    System.out.println(test1.getClass() == test4.getClass());

    // 
    System.out.println();
    // 

    SimpleDateFormat format1 = new SimpleDateFormat("");
    SimpleDateFormat format2 = new SimpleDateFormat("");
    SimpleDateFormat format3 = new SimpleDateFormat("");
    SimpleDateFormat format4 = new SimpleDateFormat("");
    System.out.println(format1.getClass() == format1.getClass());
    System.out.println(format1.getClass() == format2.getClass());
    System.out.println(format1.getClass() == format3.getClass());
    System.out.println(format1.getClass() == format4.getClass());
}
}

程序运行结果如下:


true
true
true
true

true
true
true
true

Class类用于描述类的基本信息,包括有多少个字段,有多少个构造方法,有多少个普通方法等,为了减少对内存的高占用,在内存中只需要保存1份Class类的对象就可以了,所以被设计为单例。