本次介绍的static、final都是java中极为重要的关键字,深刻理解其用途后会对往后的编程和设计大有裨益。static可以用来修饰属性,成员方法,代码块和类,static修饰的变量叫静态变量也叫类变量,静态变量是公共共享的,它在内存中只有一份,它是属于所在类的,在类加载成class文件时就初始化成功了。如果有多个static变量,static成员变量的初始化顺序按照定义的顺序从上往下进行初始化。static修饰的方法叫做静态方法,需要注意的是由于静态方法不依赖于任何对象就可以使用类名进行访问,所以静态方法中没有this关键字,并且静态方法中只能访问静态成员,不能访问非静态成员。static修饰的块(就是用{}括起来的部分)叫做静态代码块,静态代码块的内容只会在类加载时执行一次。static修饰类只有一种情况,即静态内部类,static不能修饰普通的java类。
final关键字代表着无法改变和最终的意思,它可以修饰变量非抽象类、非抽象类成员方法和变量。final修饰的成员变量一般被称作常量,赋值后无法改变,注意大部分人的误区,常量必须在定义时赋值,其实不然,可以在构造函数中给常量赋值,但必须在使用之前赋初始值。final修饰的方法该方法不能被重写,用途:上层不希望你重写某些方法导致错误,使用final修饰。final修饰类表示该类无法被继承,用途:如果一个类你永远不想让他被继承,就可以用final进行修饰。注意:final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。
这里在介绍一种使用static关键字的设计模式-单例模式,就是无论何时都只会创建全局的一个实例,该实例唯一。设计方法:1.构造器私有化(也就是构造器使用private修饰)2.在类的内部创建一个静态实例 3.编写一个获得这个实例的静态方法。单例模式又分为:饿汉模式和懒汉模式,两者的区别在于,饿汉模式是提前创建实例,而懒汉模式是到用时才创建实例。
单例模式参考代码:
package com.cdtu.test5;
/**
* @author:lxj
* @date 2023/3/10 20:33
* 功能:饿汉模式
*/
public class eHanModule {
// 创建静态变量
private static eHanModule ehm = new eHanModule();
// 构造器私有化
private eHanModule() {
}
// 提供公开接口创建对象
public static eHanModule getObject() {
return ehm;
}
}
package com.cdtu.test5;
/**
* @author:lxj
* @date 2023/3/10 20:28
* 功能:懒汉模式
*/
public class LanHanModule {
// 创建静态变量
private static LanHanModule lhm;
// 构造器私有化
private LanHanModule() {
}
// 提供公开接口创建对象
public static LanHanModule getObject() {
if(lhm == null) {
lhm = new LanHanModule();
return lhm;
}
return lhm;
}
}