静态方法
- 静态方法使用关键字static来修饰
- 如果方法的运行==不依赖类的实例变量(属性)==,那么就可以写成静态方法
- 静态方法的调用使用类来进行,格式为 ==类名.方法名==
- 可以使用类的对象调用静态方法 但该形式不推荐使用
- 静态方法中不能调用属性,在静态方法中不能调用非静态方法。非静态方法中可以调用静态方法。
使用static来修饰的变量称为静态变量
- 静态变量使用类直接调用,格式为 ==类名.变量名==
- 静态变量可以用类的对象调用 但是不推荐
- 实例变量每个类的对象各有一份,但是静态变量整个类仅此一份 (每个类的对象共享这一个值)
- 静态方法中可以调用静态变量,非静态方法也可以调用静态变量
- 常量一般写成静态
静态代码块
- 如果一段代码对应整个类值调用一次,那么这段代码就可以写成静态代码块
static {
//静态代码块
}
2.静态代码块中的程序在第一次使用这个类之前自动执行 并且只执行一次
3.静态代码块中可以调用静态变量和静态方法,不能调用实例变量和普通方法
单例模式
- 设计模式的一种,为了限制类的对象只有一个
- 实现单例模式
- 构造方法私有化
- 提供一个公有的静态方法用于获取当前类的实例
写法1(饿汉式)
public class Bank {
//构造方法私有化
private Bank(){}
private static Bank bank = new Bank();
//提供一个公有的静态方法获取当前类的实例
public static Bank getInstance(){
return bank;
}
}
写法2(懒汉式)
public class Bank {
//构造方法私有化
private Bank(){}
private static Bank bank;
//提供一个公有的静态方法获取当前类的实例
public static Bank getInstance(){
if(bank == null){
bank = new Bank();
}
return bank;
}
}