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次, 这是一个静态方法!

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

  1. JAVA学习第二十五课(多线程(四))- 单例设计模式涉及的多线程问题

    一.多线程下的单例设计模式 利用双重推断的形式解决懒汉式的安全问题和效率问题 //饿汉式 /*class Single { private static final Single t = new Si ...

  2. java singleton(单例设计模式)

    单例设计模式的主要作用是: 1.控制资源的使用,我们对资源使用线程同步来实现并发访问. 2.节约资源,我们对一个类只进行一个实例化进行全局的资源访问,节约了内存. 3.作为通信媒介,也是数据共享,可以 ...

  3. Java学习笔记(二十四):单例设计模式singleton

    为什么要使用singleton设计模式? 假设设计了一个操作数组的工具类(Tools),里面有一个锤子的方法(Hammer),如果不使用singleton设计模式,每次想调用Hammer方法都需要ne ...

  4. Java设计模式之单例设计模式总结

    package singleton; /**单例设计模式 饿汉式 * * @author gx *这种方式基于classloder机制避免了多线程的同步问题,不过,instance在类装载时就实例化, ...

  5. Java基础-访问修饰符

    访问修饰符 default (即缺省,什么也不写): 在同一包内可见,不使用任何修饰符.使用对象:类.接口.变量.方法. private : 在同一类内可见.使用对象:变量.方法. 注意:不能修饰类( ...

  6. 零基础学习java------day8------javabean编写规范,继承,static关键字,代码块,单例设计模式

    0. 今日内容提要 1. javabean书写规范 javabean:一个普通的类,用来描述事物的类,里面不包含任何的业务逻辑,只是用来存储数据. 比如:Teacher,Student,Mobile. ...

  7. Java 基础入门随笔(10) JavaSE版——单例设计模式

    设计模式:对问题行之有效的解决方式.其实它是一种思想. 1.单例设计模式. 解决的问题:就是可以保证一个类在内存中的对象唯一性.(单个实例) 使用单例设计模式需求:必须对于多个程序使用同一个配置信息对 ...

  8. java笔记之静态修饰附和单例设计模式

     第六天笔记 静态修饰符static: 一.static修饰成员变量: static用来修饰成员变量叫静态成员变量,没有static修饰的成员变量叫非静态成员变量 静态成员的访问方式: (1)   用 ...

  9. Java面向对象 Main函数 静态的应用 单例设计模式

     Java面向对象 Main函数 静态的应用与单例设计模式 知识概要             (1)Main函数的细解 (2)静态的应用,静态变量,静态代码块,静态函数 (3)单例设计模式 1.M ...

随机推荐

  1. excel自学笔记 from av50264533

    1.函数公式 MINUTE(serial_number)  函数解读 Serial_number 表示一个时间值,其中包含要查找的分钟  函数公式 NOW()  函数解读 显示出现在的时间 计算通话时 ...

  2. matlab求取积分

    声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 对于Matlab的使用情况常常是这样子的,很多零碎的函数名字很难记忆,经常用过后过一段时间就又忘记了,又得去网 ...

  3. jqGrid常用方法

    var jqGrid = $("#jqGrid"); // 获取选中行id[单行],test1就是最先一个行id var test1 = jqGrid.jqGrid("g ...

  4. [转载]Oracle中动态SQL详解

    1.静态SQLSQL与动态SQL Oracle编译PL/SQL程序块分为两个种:其一为前期联编(early binding),即SQL语句在程序编译期间就已经确定,大多数的编译情况属于这种类型:另外一 ...

  5. 日常工作问题解决:使用vmvare克隆centos6虚拟机造成无eth0的解决办法

    目录 一.问题描述 样本虚拟机配置有两张网卡,eth0.eth1,使用vmvare克隆虚拟机后,复制的虚拟机,没有网卡eth0,eth1,而是有eth2.eth3,如下所示: 二.原因分析 复制系统中 ...

  6. Python学习笔记——Python 函数

    1. 函数定义与调用 def MyFirstFunction(): print('这是我创建的第一个函数') #调用 MyFirstFunction() 这是我创建的第一个函数 2. 函数文档 def ...

  7. C 循环统计输入的单词个数和字符长度

    C 循环统计输入的单词个数和字符长度 #include <stdio.h> #include <Windows.h> int main(void) { ]; ; ; print ...

  8. 深度剖析Kubernetes API Server三部曲 - part 3

    在本系列的前两部分中我们介绍了API Server的总体流程,以及API对象如何存储到etcd中.在本文中我们将探讨如何扩展API资源. 在一开始的时候,扩展API资源的唯一方法是扩展相关API源代码 ...

  9. ASM实例修改SYS密码

    修改ASM实例中SYS用户密码 How To Change ASM SYS PASSWORD ? (文档 ID 452076.1) Oracle Database - Enterprise Editi ...

  10. 0160 十分钟看懂时序数据库(I)-存储

    摘要:2017年时序数据库忽然火了起来.开年2月Facebook开源了beringei时序数据库:到了4月基于PostgreSQL打造的时序数据库TimeScaleDB也开源了,而早在2016年7月, ...