- 修饰符 final 关键字
final 修饰符只能修饰到如下几个地方:
- final 变量 =》 表示这是一个常量值,不可被修改。
- final 方法 =》 表示这个方法不可以被重写,不可被修改。
- final 类 =》 表示这个类不可被继承,不可被修改。
常量命名的规范:
- 全大写。
- 每个单词之间用_分隔。
例如:
final int DAY_OF_YEAR = 365;
- 修饰符 static 关键字
static 中文名:静态。
static可以修饰4个地方:
- 代码块 ---- 静态代码块。
- 属性 ---- 静态属性。
- 方法 ---- 静态方法。
- 内部类 ---- 静态内部类(淘汰了)。
静态代码块:
static{
代码块;
}
静态代码块一定是写在类中的。
静态代码块是在类加载时被执行的,而且只会执行一次。
public class A {
static {
System.out.println("静态代码块!");
}
public A() {
System.out.println("A类的构造方法!");
}
public static void main(String[] args) {
new A();
new A();
}
}
静态属性:
为实例属性增加 static 修饰符后,属性就变成了静态属性。
例:
public class A {
private static int i ;//静态属性
private int j ;//实例属性
}
——实例属性是属于每一个实例的。每一个实例都有自己的实例属性。实例属性是使用构造方法进行初始化。
——静态属性是属于当前整个类的。这个类的每一个实例都共用同一个静态属性。
静态属性是在类加载时就创建了。使用静态代码进行初始化操作。
静态属性的使用方法有两种:
- 对象名.静态属性
- 类名.静态属性
静态方法:
静态方法属于当前整个类的。
使用 类名.静态方法() 进行调用。——使用静态方法来操作静态属性。
PS:一般算法类的公式,都会写成静态的方法。
- 单例模式
什么是单例模式:
单例模式:表示一个类只能去创建一个实例。
单例模式的第一步:私有化构造方法
第一步:私有构造方法,构造方法就只能在类内调用。所以实例只能在类内创建。
第二步:在类内创建实例。
第三步:让外部通过本类的静态方法来获取实例。
饿汉模式:
public class SingletonA {
// 第二步:在类内创建实例(类内属性私有化)
private static SingletonA singletonA = new SingletonA();
// 第一步:私有化构造方法
private SingletonA() {
}
// 第三步:静态方法,通过类名.getSingletonA();
public static SingletonA getSingletonA() {
return singletonA;
}
}
懒汉模式:
public class SingletonB {
private SingletonB singletonB;
private SingletonB() {
}
public SingletonB getSingletonB() {
if (singletonB == null){
singletonB = new SingletonB();
}
return singletonB;
}
}