final、static、集合

时间:2019-09-22
本文章向大家介绍final、static、集合,主要包括final、static、集合使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Objects

概念:优化Object类中方法的工具类,这个工具类是空指针容忍(允许)的。

  public static boolean equals(Object a, Object b) {
    return (a == b) || (a != null && a.equals(b));
  }

final关键字

final修饰符表示最终的

适用场景:

  1. 变量:变量变常量,常量不能被赋值
  2. 对象:对象不能被赋值
  3. 方法:方法不能被重写
  4. 类:类是最终类,不能被继承

static关键字

概述:被静态所修饰的成员是本类所有对象的共享数据(在内存中只有一份)

特点/注意点:

  1. 随着类的加载而加载,随着类的释放才被释放
  2. 推荐直接使用类名/接口名来调用静态成员
  3. 静态成员是优先于构造函数存在的。(构造方法是在创建对象的时候第一个创建的。但是静态是在创建类的时候就创建了。)
  4. 静态成员只能访问(调用)静态成员,非静态的成员可以访问静态的也可以访问非静态的(静态的只能访问静态的数据。所以在main中直接调用的一定是静态的。)
  5. 静态不能和this共存(静态不能和this共存因为this指的是当前对象,static和对象没有关系,是和类的层次有关系。static加载的时候对象还不存在。你无法对一个未存在的东西进行操作。包括super、成员方法等对象中的东西。)
  6. 静态只能修饰成员不能修饰局部(即只能存在类中修饰一些成员,不能在方法或者作用域中使用,也不能在静态中使用静态方法属于局部。)

静态代码块

  • 存在于类中,是最优先执行,永远没有比它快的。比构造还先执行。
  • 在内存中只有一份,只执行一次。(每次在方法区加载类的时候都会加载静态方法到方法区。当类死亡的时候静态才会死亡。所以对象的创建不会加载静态,创建多少都不会。只有类的加载才会,然而类的声明周期内不知道可以创建多少个对象,然而静态方法依然在类不死它不死。)
  • 有两个静态的时候会按顺序执行。

  • 格式:
    static{ //静态代码块 }
  • 作用:
    1. 读取配置文件,配置文件要最先加载
    2. 为当前类的静态成员初始化。

使用场景

  1. 共享数据
  2. 工具类中的方法

额外

  1. super只能在构造函数中使用不能在成员方法中使用,不能在静态中使用。

原文地址:https://www.cnblogs.com/macht/p/11567560.html