Objects
概念:优化Object类中方法的工具类,这个工具类是空指针容忍(允许)的。
public static boolean equals(Object a, Object b) {
return (a == b) || (a != null && a.equals(b));
}
final关键字
final修饰符表示最终的
适用场景:
- 变量:变量变常量,常量不能被赋值
- 对象:对象不能被赋值
- 方法:方法不能被重写
- 类:类是最终类,不能被继承
static关键字
概述:被静态所修饰的成员是本类所有对象的共享数据(在内存中只有一份)
特点/注意点:
- 随着类的加载而加载,随着类的释放才被释放
- 推荐直接使用类名/接口名来调用静态成员
- 静态成员是优先于构造函数存在的。(构造方法是在创建对象的时候第一个创建的。但是静态是在创建类的时候就创建了。)
- 静态成员只能访问(调用)静态成员,非静态的成员可以访问静态的也可以访问非静态的(静态的只能访问静态的数据。所以在main中直接调用的一定是静态的。)
- 静态不能和this共存(静态不能和this共存因为this指的是当前对象,static和对象没有关系,是和类的层次有关系。static加载的时候对象还不存在。你无法对一个未存在的东西进行操作。包括super、成员方法等对象中的东西。)
- 静态只能修饰成员不能修饰局部(即只能存在类中修饰一些成员,不能在方法或者作用域中使用,也不能在静态中使用静态方法属于局部。)
静态代码块
- 存在于类中,是最优先执行,永远没有比它快的。比构造还先执行。
- 在内存中只有一份,只执行一次。(每次在方法区加载类的时候都会加载静态方法到方法区。当类死亡的时候静态才会死亡。所以对象的创建不会加载静态,创建多少都不会。只有类的加载才会,然而类的声明周期内不知道可以创建多少个对象,然而静态方法依然在类不死它不死。)
有两个静态的时候会按顺序执行。
- 格式:
static{ //静态代码块 }
- 作用:
- 读取配置文件,配置文件要最先加载
- 为当前类的静态成员初始化。
使用场景
- 共享数据
- 工具类中的方法
额外
- super只能在构造函数中使用不能在成员方法中使用,不能在静态中使用。