关键字static、单例设计模式

用途

可以用来修饰属性、方法、代码块、内部类。

修饰属性:静态变量

属性,按照是否使用static修饰分为静态属性和非静态属性(实例变量)

  • 实例变量:我们创建了类的多个对象,每个对象都独立的拥有一套类中的非静态属性。当修改其中一个对象中的非静态属性时,不会导致其他对象中同样的属性值的修改。
  • 静态变量:我们创建了类的多个对象,多个对象共享同一个静态变到当通过某一个对象修改静态变量时,会导致其他对象调用此静态变量时,是修改过了的。

注:静态变量随着类的加载而加载,可以通过"类.静态变量"的方式进行调用;
静态变量的加载要早于对象的创建;
由于类只会加载一次,则静态变量在内存中也只会存在一份:存在方法区的静态域中;
类变量 实例变量
类 yes no
对象 yes yes

修饰方法:静态方法

1.随着类的加载而加载,可以通过”类,静态方法”的方式进行调用
2.静态方法非静态方法
类yes no对象yes yes
3.静态方法中,只能调用静态的方法或属性非静态方法中,既可以调用非静态的方法或属性,也可以调用静态的方法或属性

static注意点

在静态的方法内,不能使用this关键字、super关键字

单例设计模式

所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例。
关键字static、单例设计模式

单例设计模式的优点

关键字static、单例设计模式
举例:Java.lang.Runtime

实现方法

懒汉式和饿汉式
两者的区别:

饿汉式:坏处:对象加载时间过长。好处:饿汉式是线程安全的
懒汉式:好处:延迟对象的创建。
目前的写法坏处:线程不安全。—>到多线程内容时,再修改

应用场景

关键字static、单例设计模式