static关键字
static 关键字
静态
static 可以修饰哪些
可以修饰属性,也可以修饰方法,可以修饰代码块,修饰内部类
语法
访问修饰符 static 关键字 返回值类型 方法名(参数列表)
static 变量
修饰的的变量是一个类之间的共享变量
static 变量有哪些
1,成员变量:每一个类的实例对象都拥有一套这个类的非静态成员变量,并且各个对象互不影响
2,静态变量:静态变量属于类变量,某个类的多个实例之间共享静态变量
static 修饰的变量有什么特点
1,会随着类加载而加载
2,优先级高于对象的加载
3,其修饰的成员变量 被该类所有对象所共享
4,访问权限在允许情况下,可以不创建对象,直接使用类名.静态变量去访问
注意
1, static修饰的方法中是不能使用this,也不能使用super
2,static 方法不能直接调用 非static修饰的方法
3,static修饰的方法是不能被重写的
4,static 修饰的方法中是不能直接调用非static修饰的方法的
static关键字的应用:单例模式
一个类只能创建一个实例化对象,为了保证只能创建一个对象,构造器私有化设置为private,外部不能创建对象,只能提供一个static修饰的公有化方法用于返回唯一的实例。
单例模式的两种实现
饿汉式
饿汉式的实现步骤
先创建对象,当调用时对象已经创建好了,直接返回已创建对象.
//1.创建私有化构造器
private Bank(){}
//创建一个私有化对象
private static Bank bank = new Bank();
//提供一个公有化方法,用于返回唯一的实例
public static Bank getInstance(){
return bank;
}
饿汉式的特点
优点:天然线程安全
缺点:加载早,创建的对象存在时间长,占用内存空间
懒汉式
懒汉式实现步骤
//私有化构造器
private Bank(){}
//创建唯一的对象
private static Bank bank = null;//先不分配内存
//提供公有化方法用于返回唯一实例
public static Bank getInstance(){
if(bank = null)
bank = new Bank();//如果之前没创建过对象,这里才分配内存
return bank;//如果唯一的实例存在,直接返回当前唯一实例
}
懒汉式的特点
缺点:线程需要做安全处理
优点:需要的时候才创建对象,减少系统开销