java新手笔记12 单例
1.单例
package com.yfs.javase;
public class Singleton {
//private static final Singleton single = new Singleton();//定义自己的对象引用
private static Singleton single;
// 控制构造方法
private Singleton() {
}
// 提供获取对象的方法
public static Singleton getInstance() {
if(single == null) {
System.out.println("创建Singleton对象....");
single = new Singleton();
}
return single;
}
public void sayHello() {
System.out.println("Hello....");
}
}
2.单例测试
package com.yfs.javase;
public class SingleTest {
public static void main(String[] args) {
// Singleton s1 = new Singleton();
// s1.sayHello();
//
// Singleton s2 = new Singleton();
// s2.sayHello();
//
// final int a = 10;
//a = 20;
// System.out.println("s1 == s2 : " + (s1 == s2));
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
s1.sayHello();
s2.sayHello();
System.out.println("s1 == s2 : " + (s1 == s2));
}
}
3.开关灯示例
package com.yfs.javase;
public class Light {
// 属性编号 状态
private int index;
private boolean lighting = true;
// 构造方法
public Light(int index) {
this.index = index;
setIndex(index);
}
// 查看状态方法
public boolean isLighting() {
return lighting;
}
// 获取灯的编号
public int getIndex() {
return index;
}
// 根据编号设置灯的状态
private void setIndex(int index) {
for (int i = 1; i < index; i++) {
if (index % i == 0) {
// if (lighting) {//== true
// lighting = false;
// } else {
// lighting = true;
// }
// lighting = lighting ? false : true;
lighting = !lighting;
}
}
}
}
4.灯测试
package com.yfs.javase;
public class LightTest {
public static void main(String[] args) {
//灯数组
Light[] lights = new Light[100];
//创建对象
for (int i = 0; i < lights.length; i++) {
lights[i] = new Light(i + 1);
}
//查看灯的状态
for (int i = 0; i < lights.length; i++) {
//灯类必须查看状态方法
if(lights[i].isLighting()){
System.out.println("第 " + lights[i].getIndex() + " 灯是亮的");
}
}
}
}
5.乘法表
package com.yfs.javase;
public class Demo {
private Demo() {
}
public static Demo get() {
return new Demo();
}
public static void main(String[] args) {
for (int i = 1,j = 1; i < 10; ) {
System.out.print(j + " * " + i + " = " + (i * j) + " ");
j++;//让列增长
if(j == i + 1) {
j = 1;
System.out.println();
i++;//行增长
}
}
}
}
java新手笔记12 单例的更多相关文章
- Java学习笔记之---单例模型
Java学习笔记之---单例模型 单例模型分为:饿汉式,懒汉式 (一)要点 1.某个类只能有一个实例 2.必须自行创建实例 3.必须自行向整个系统提供这个实例 (二)实现 1.只提供私有的构造方法 2 ...
- JAVA自学笔记12
JAVA自学笔记12 1.Scanner 1)JDK5后用于获取用户的键盘输入 2)构造方法:public Scanner(InputStream source) 3)System.in 标准的输入流 ...
- java中安全的单例与不安全的单例
java中安全的单例与不安全的单例 1.内部静态类(安全的) public class Singleton { private static class SingletonHolder{ privat ...
- java新手笔记11 类的静态属性、方法(单例)
1.Person类 package com.yfs.javase; public class Person { String name;//每个对象上分配 与对象绑定 int age; char se ...
- Java笔记(十一)……单例设计模式
设计模式 解决某一类问题最行之有效的方法 Java中有23中设计模式 单例设计模式 解决一个类在内存中只存在一个对象 思路 将构造函数私有化 在类中创建一个本类对象 提供一个方法可以获取到对象 两种方 ...
- Effective java 第2版 - 笔记(01) 单例(Singleton)的枚举(enum)实现
直接上代码: public enum Boss { INSTANCE; private String name; public void doSomeThing() { System.out.prin ...
- JAVA的设计模式之单例设计模式
1.确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例. 1)理论 Java Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在. 使用Singl ...
- Java公开课-06.单例
一. 什么是单例模式 因程序需要,有时我们只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计. 二. 单例模式的特点 1. 单例模式只能有一个实例. 2. 单例类必须创建 ...
- java基础学习之单例设计模式学习
最近狂补java基础的我重新学习了下单例,下面直接贴出代码,以作备忘 package com.darling.single; /** * 单例模式 * 单例即在内存中只存在该类的一个实例,要想实现这个 ...
随机推荐
- oracle 分区和分区索引
一.个人理解:建表时一般都会指定在一个表空间上,但是可能随着表空间扩大,查询越来越慢,分区表就是将一个表实际存在不同的表空间,oracle存储分为块,断,表空间.新建一个表,会给表分配指定大小的段,段 ...
- HADOOP2.2.0安装配置指南
一. 集群环境搭建 这里我们搭建一个由三台机器组成的集群: Ip地址 用户名/密码 主机名 集群中角色 操作系统版本 192.168.0.1 hadoop/hadoop Hadoop-mast ...
- 【Java基础】关于String的总结
String构造方法初始化和常量赋值初始化区别 下面的代码是一个String对象的两种不同的初始化方式,关于这两种不同初始化方式的区别,本文通过画内存图来进行解释,首先代码如下: public cla ...
- linux设备驱动----利用mdev(udev)自动创建设备文件节点
1.mdev的使用方法和原理: mdev是busybox 自带的一个简化版的udev,适合于嵌入式的应用埸合.其具有使用简单的特点.它的作用,就是在系统启动和热插拔或动态加载驱动程序时,自动产生驱动程 ...
- ssl error rx record too long
- 问题-[DelphiXE2]编译程序体积大的问题
作者:cashfly 发布:2012-03-27 15:12 最近准备换Delphi高版本来写程序,以前一直用7.想体验一下新版本带来的便捷,首先有一个体积问题,看下文介绍. 首先,在IDE里可以直接 ...
- 几乎每个文件里面都有 #ifdef __cplusplus extern "C" { #endif 可我没找到程序里那个地方定义了__cplusplus 啊?这又是怎么回事呢?
我们的C语言有个进化版,叫C++,这个想必楼主知道,Keil MDK是支持C++编程的,也就是说,你可以用C语言或者C++写你的程序,都可以. 但是,有一个问题,就是头文件的问题,C语言写的头文件C+ ...
- Android多线程研究(4)——从一道面试题说起
有一道这种面试题:开启一个子线程和主线程同一时候运行,子线程输出10次后接着主线程输出100次,如此重复50次.先看以下代码: package com.maso.test; /** * * @auth ...
- Java命令行运行参数说明大全--转
来源:http://xinklabi.iteye.com/blog/837435 Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOME\ ...
- UITableview自定义accessory按钮和ImageView大小一致
if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseI ...