0
点赞
收藏
分享

微信扫一扫

Java static关键字

爱奔跑的读书者 2022-02-08 阅读 78

一、成员变量

  • static 修饰的成员变量称为静态成员变量,属于类,在内存中只存储一份,只加载一次,可以被共享访问。访问格式 类名.静态成员变量
  • static 修饰的成员变量称为实例成员变量,属于对象。访问格式 对象.实例成员变量

二、成员方法

  • static 修饰的成员方法称为静态成员方法,属于类。访问格式 类名.静态成员方法,使用场景:以执行一个通用功能为目的,或者需要方便访问
  • static 修饰的成员方法称为实例成员方法,属于对象。访问格式 对象.实例成员方法,使用场景:表示对象自己的行为,且方法中需要访问实例成员

三、static访问注意

  • 静态成员变量和静态成员方法是属于类的,执行时类加载后会同时加载静态成员变量(堆内存)或静态成员方法(方法区)
  • 静态方法只能访问静态的成员,不可以直接访问实例成员,但是可以间接访问(创建对象访问)
  • 实例方法可以访问静态成员,也可以访问实例成员
  • 静态方法中不能出现this关键字(因为this表示当前对象)

四、代码块

  • 静态代码块
    • 格式:static{}
    • 特点:需要使用static关键字修饰,随着类加载而加载,并且自动触发、只执行一次、优先执行
    • 使用场景:在类加载的时候做一些静态数据初始化的操作,以便后续使用
  • 构造代码块
    • 格式:{}
    • 特点:每次创建对象,调用构造器执行时都会执行该代码块中的代码,且先于构造器
    • 使用场景:初始化实力资源

五、static应用

  • 设计模式 ---- 单例模式
    • 保证系统中应用该模式的这个类永远只有一个实例,即一个类永远只能创建一个对象。
    • 实现方式:饿汉单例模式、懒汉单例模式、…
  1. 饿汉单例设计模式:在类获取对象的时候,对象已经提前创建好了
// a. 定义一个单例类
public class SingleInstance {
	// c. 定义一个静态变量存储一个对象:属于类,与类一起加载一次
	public static SingleInstance instance = new SingleInstance();
	
	// b. 构造器私有
	private SingleInstance() {
	}
}
  1. 懒汉单例设计模式:在需要使用该对象时才去创建对象(延迟加载对象)
// a. 定义一个单例类
public class SingleInstance {
	// c. 定义一个静态变量存储一个对象:属于类,不初始化对象
	private static SingleInstance instance;
	
	// b. 构造器私有
	private SingleInstance() {
	}

	// d.提供一个方法返回一个单例对象
	public static SingleInstance getInstance() {
		if (instance == null){
			instance = new SingleInstance();
		}
		return instance;
	}
}
举报

相关推荐

0 条评论