Java基础 static限定符的使用 以及【 static实现的 singleton(单例)设计模式】

static实现的 singleton(单例)设计模式

/** static实现的 singleton设计模式 , 使得一个类只能够创建一个static对象
 */

模板设计结构:

package Coding;
public class Main_of_Coding {
    public static void main(String[] args) {
        Singleton s1=Singleton.getInstance();
        Singleton s2=Singleton.getInstance();
        System.out.println(s1==s2);   //true
    }
}
class Singleton{
    //1.首先私有构造器,使得外部的类不能够使用此构造器
    private Singleton() {
    }
    //2.在类内部创建一个私有的实例对象,该对象私有(仅开放方法调用此对象),static保持此对象唯一
    private static Singleton instance = new Singleton();

    public static Singleton getInstance() {
        return instance;
    }

}

 

 


 

static的笔记:

/**static 修饰属性(类变量):
 * 1.由类创建的所有的对象,都公用这一个属性; 当其中一个对象对此属性进行修改,会导致其他对象对此进行修改
 * 2.既不在栈空间,也不在堆空间, 在一块公共的静态空间.
 * 3.可以直接 Class名.静态变量 调用! (不同于其他变量, static变量独立于类本身存在)
 * 4.在自己类内调用,不用加this()!
 *
 * Static 修饰方法(基本同static 属性)
 */

代码:

package Coding;
public class Main_of_Coding {
public static void main(String[] args) {
Sportsman s1=new Sportsman("Jane",12);
Sportsman.show();
s1.nation="China";
System.out.println(s1.nation+ " \n"+Sportsman.nation);
s1.show();
}
}
class Sportsman{
String name;
int age;
static int num;//统计调用次数
static String nation;
public Sportsman(String name,int age){
this.name=name;
this.age=age;
}
static void show(){
System.out.println("调用了 "+num+"次, 这是一个静态方法! ");
num++;
}
}

运行结果:

调用了 0次, 这是一个静态方法!
China
China
调用了 1次, 这是一个静态方法!

 

posted @ 2018-10-12 15:23  山枫叶纷飞  阅读(553)  评论(0编辑  收藏  举报