静态和单例:饿汉式和懒汉式.
2013-03-25 21:31
113 查看
------- android培训、java培训、期待与您交流! ----------
static 静态:静态优先对象进内存,在方法区
类类型:某个类的一个方法的返回类型是这个类的一个实例
1. 静态修饰的成员变量
|-- 数据是对象共享
|-- 类名调用 类名.静态方法()
|-- 跟对类的加载而加载,方法区中的静态区 ,跟随类的消失而消失
|--当类中的成员函数,都没有访问过类中的成员变量,函数使用static修饰
|-- 静态修饰的成员变量,不属于对象,所属的是类,类变量
|--当出现对象共享数据的时候,使用static修饰
2. 静态修饰的成员函数
|-- 随着类的加载,而加载,方法区中的静态区
|-- 直接被类名调用
|-- 静态函数中,不能写this 和 super
|-- 静态上下文中,不能引用非静态变量,静态不能访问非静态
4. 静态使用场景
|-- 共享数据,建立定义成静态 static int 变量名大写 = 值
|-- 当函数中,没有使用过类中的非静态成员变量时,建立将函数定义为静态
6 开发中基本不用,面试的时候基本会用
|-- 静态代码块,定义在类中,当类加载到内存方法区中,运行一次,以后不会在运行了
|-- 构造代码块,建立对象就运行一次
5.文档化命令:
饿汉式:
this比较2个字的值:
static 静态:静态优先对象进内存,在方法区
类类型:某个类的一个方法的返回类型是这个类的一个实例
1. 静态修饰的成员变量
|-- 数据是对象共享
|-- 类名调用 类名.静态方法()
|-- 跟对类的加载而加载,方法区中的静态区 ,跟随类的消失而消失
|--当类中的成员函数,都没有访问过类中的成员变量,函数使用static修饰
|-- 静态修饰的成员变量,不属于对象,所属的是类,类变量
|--当出现对象共享数据的时候,使用static修饰
2. 静态修饰的成员函数
|-- 随着类的加载,而加载,方法区中的静态区
|-- 直接被类名调用
|-- 静态函数中,不能写this 和 super
|-- 静态上下文中,不能引用非静态变量,静态不能访问非静态
4. 静态使用场景
|-- 共享数据,建立定义成静态 static int 变量名大写 = 值
|-- 当函数中,没有使用过类中的非静态成员变量时,建立将函数定义为静态
6 开发中基本不用,面试的时候基本会用
|-- 静态代码块,定义在类中,当类加载到内存方法区中,运行一次,以后不会在运行了
|-- 构造代码块,建立对象就运行一次
5.文档化命令:
javadoc -d -author -version Demo.java //文档化开头 directory 提取作者 提取版本 类名 //注意要编译的类必须为public
饿汉式:
/* 饿汉式 单例模式:解决对象的唯一性,保证了内存中一个对象是唯一的 解决步骤 1. 不能让你 new 对象 2. 但是,我可以自己建立自己的对象 3. 对外界提供一个方法,返回自己建立的这个对象 4. 不能用new建立对象,但是我调用类中的一个对外方法,获取到该类的对象 代码实现 1.私有化构造函数 2.自己可以访问自己的构造函数,这个对象能是匿名的吗?不能 3.提供公共函数,返回自己建立的对象 s 就OK了 4.既然不能建立对象,调用getInstance方法,但是方法可以被类名调用 */ class Single{ private Single(){} //构造函数帮对象进行初始化 private static Single s = new Single();//private是为了不让外部类访问变量改值 //因为下面静态了,静态不能访问非静态,所以之类也要加上static public static Single getInstance(){ //Single是类类型变量,static是为了给类调用 return s;//返回s的值 } public void show(){ System.out.pringln("你好,我好大家好"); } } class SingTest{ public static void main(String[] args){ Single s = Single.getInstance(); Single s1 = Single.getInstance();//调用类方法, 类名.方法 s.show(); s1.show();//打印输出语句 System.out.println(s); System.out.println(s1);//打印2个返回来的地址值,看是不是同一个堆内存里的对象 } }懒汉式:
class Demo{ public static void main(String[] args){ System.out.println(Single.show()); } } class Single{ private Single(){} private static Single s = null;//程序一加载,方法区里就有S,堆内存里就有对象了,对象的地址值就赋予了S public static Single show(){ if (s == null){ s = new Single(); } return s; } }
this比较2个字的值:
class Person{ private String name; private int age;//建立对象的时候,就确定了姓名和年龄 //建立对象的时候,就需要给name age赋值,需要构造函数 Person(String name,int age){ this.name = name; this.age = age;}//比较功能,自己知道自己的年龄,需要知道对方的年龄 //比较年龄,自己的知道,未知的是对方的年龄,对方的年龄,肯定定义在了对方的对象中 public boolean compare(Person p){//此对象和彼对象比较上 return this.age == p.age; //变量p1调用了compare函数,所以this.age代表p1,也可以省略不写 } } class ThisTest { public static void main(String[] args) { Person p1 = new Person("张三",20);//给构造函数传值是写在主函数新建对象后面的括号里 Person p2 = new Person("李四",10); boolean b = p1.compare(p2); //将p2的值赋予了compare函数 System.out.println("b="+b); } }
相关文章推荐
- 1.单例设计模式(懒汉式,饿汉式,枚举式,双重检测锁式,静态内部
- 单例设计模式(懒汉式,饿汉式,枚举式,双重检测锁式,静态内部类式)
- 单例设计模式(懒汉式,饿汉式,枚举式,双重检测锁式,静态内部类式)
- (24)单例设计模式两种写法:饿汉式和懒汉式
- 设计模式——懒汉式单例类PK饿汉式单例类
- 懒汉式和饿汉式
- 单例设计-饿汉式懒汉式
- 单例模式的两种方式:懒汉式、饿汉式
- 【怎样写代码】确保对象的唯一性 -- 单例模式(四):饿汉式单例类与懒汉式单例类的讨论
- java之单例(懒汉式、饿汉式)
- 饿汉式、懒汉式singleton模式
- 懒汉式与饿汉式的区别
- 单例模式 之 饿汉式 懒汉式 注册式 比较
- 单例模式的简单实现与两种实现方法的比较(饿汉式和懒汉式)(二)
- 饿汉式与懒汉式的区别
- Java中常用来处理时间的三个类:Date、Calendar、SimpleDateFormate,以及Java中的单例设计模式:懒汉式、饿汉式以及静态内部类式
- 懒汉式单例模式和饿汉式单例模式的详解
- 单例之懒汉式和饿汉式
- 单例设计模式(懒汉式,饿汉式,枚举式,双重检测锁式,静态内部类式)
- 单例模式--饿汉式、懒汉式、线程安全的懒汉式、高性能安全的懒汉式