Ø 静态变量
用static修饰的变量就是静态变量
1.类加载的时候就初始化;
2.被所有实例共享,内存中仅有一个值;
3. 使用类名进行访问;
如果在定义一个类的时候,发现一个成员变量需要被所有实例所共享,那么这个成员变量就需要定义为static的。
静态方法
用static修饰的方法就是静态方法。
1.静态方法在类加载后就可以使用;
2.静态方法使用类名进行访问;
3.静态方法不能直接访问外部非静态成员,因为外部非静态成员必须在类创建对象之后才能使用,而静态方法可以在没创建对象时就使用。如果要在静态方法内部访问外部非静态成员,需要先创建该类对象,通过对象访问。
4.静态方法中不能使用this关键字。因为this是个本类的引用,this无从引用。
静态方法通常是作为工具方法或者一个可以产生对象的方法被声明,目的是为了让调用者更方便的使用,不必创建对象。
静态代码块
用static修饰的代码块就是静态代码块。
1.静态代码块在类加载后执行。
2.静态代码块和静态方法相同,不能使用外部非静态成员。
3.静态代码块执行和静态变量的初始化顺序由代码从上到下顺序决定。
垃圾回收
对象在没有任何引用可以到达时,生命周期结束,成为垃圾。
所有对象在被回收之前都会自动调用finalize()方法。
一个对象在成为垃圾之后不会被马上回收,JVM会检测内存中的垃圾堆积到一定程度时才会回收,如果我们不想等到这个时候才回收,可以使用System.gc()方法来通知虚拟机回收垃圾,但是调用了System.gc()不代表对象会一定会被回收。调用该方法之后JVM会开启新线程做处理垃圾的工作,这需要一定时间。
单态设计模式(SingletonPattern)
什么是设计模式
在编程过程中我们经常会遇到一些典型的问题或需要完成某种特定需求,而这些问题和需求前人也曾经遇到过,他们经过大量理论总结和实践验证之后优选出的代码结构、编程风格、以及解决问题的思考方式,这就是设计模式(Design pattern)。设计模式就像是经典的棋谱,不同的棋局,我们用不同的棋谱,免得我们自己再去思考和摸索。
单态(单例)设计模式
单态设计模式(Singleton pattern)类在整个运行生命周期内只有一个实例,所以叫做单例模式。
单态设计模式的写法
1.私有化构造函数,阻止外部创建新对象。
2.由于需要返回一个实例这个实例只有一个,那么我们就需要在类内部自己创建一个对象,并使用static进行修饰其变量名。
3.提供一个公有的方法用来获取唯一的一个对象,在获取的时候进行判断改实例是null就调用构造函数生成一个返回即可。
这个方法由于需要在不创建对象的情况下使用,所以需要静态。