提纲
- static修饰成员变量
- static修饰成员变量的应用场景
- static修饰成员方法
- static修饰成员方法的应用场景
- static的注意事项
- static的应用知识:代码块
- static的应用知识:单例设计模式
static静态的意思,可以修饰成员变量,成员方法;
- static修饰成员变量:
1.有static修饰的成员变量叫做类变量;
a.类名.变量名 (推荐这样进行调用);
b.类变量与类一起加载一次,内存中只有一份,被所有对象共享;
c.在本类中访问类变量可以省略类名,访问其他类的类变量不能省略;
- static修饰成员变量的应用场景
在开发中如果某个数据只需要一份,并且可以被共享(访问,修改),可以将其定义为类变量;
案例:
注意:在本类访问类变量可以省略类名,其他类中不可以;
-
static修饰成员方法
static修饰成员方法叫做类方法;
a.类方法可以使用类名直接调用(推荐调用方法);
b.静态方法只能调用静态的方法;
c.类方法中可以直接访问类成员,不能访问实例成员;
d.实例方法中既可以访问类变量,也可以访问实例变量;
e.实例方法中可以出现this关键字,类方法中不能出现this关键字;
(静态方法中不能用this关键字,因为this是个引用,哪个对象调用方法就引用哪个对象。 而静态方法有可能不是被对象调用的,this无从引用。类方法是属于类本身的 所有对象共享 this表示当前实例的引用 静态方法中不能引用非静态实例成员); -
应用
类方法常用于工具类(until)(为了防止创建对象浪费内存,其次为了方便调用)
- 扩展-工具类
a.工具类的方法都是类方法,方便调用,每个类方法用来完成一个功能;
b.类名见名知意,空参构造私有化;
- static修饰代码块
代码块是类的5大成分之一(成员变量、构造器、方法、代码块、内部类)
static修饰的代码块是静态代码块
格式:static { }
特点:类加载时自动执行,由于类只会加载一次,所以静态代码块也只会执行一次。
作用:完成类的初始化,例如:对类变量的初始化赋值。
实例代码块:
格式:{ }
特点:每次创建对象时,执行实例代码块,并在构造器前执行。
作用:和构造器一样,都是用来完成对象的初始化的,例如:对实例变量进行初始化赋值。
static的应用
设计模式(Design pattern) ?
一个问题通常有n种解法,其中肯定有一种解法是最优的,这个最优的解法被人总结出来了,称之为设计模式。
设计模式有20多种,对应20多种软件开发中会遇到的问题。
单例设计模式(确保类只有一个对象)
饿汉
把类的构造器私有。
定义一个类变量记住类的一个对象。
定义一个类方法,返回对象。
懒汉
class RunTime{
//1.私有化的空参构造
private RunTime(){}
//2.类变量记录一个对象,不做初始化
private static RunTime runTime;
//3.定义一个类方法,判断返回值
public static RunTime getObiect(){
if(runTime == null){
runTime = new RunTime();
}
return runTime;
}
}