java基础之final/static/static final

一、final

  1.final修饰变量(常量)

    final修饰的成员变量表示常量,一旦给定初值既无法改变

  2.final方法

    final修饰方法,表示该方法不能被子类重写

    好处:比非final方法要快,因为在编译时已经静态绑定了,不需要在运行时在动态绑定。 

  3.final类

    final修饰类,表示该类不能被继承,因此该类的所有方法也不能被重写

  4.final参数

    final修饰函数参数时,表示该参数可以被调用,但是不能被修改其值

二、static

  static一般表示“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块

  1.static变量

    先讲一个概念:被static修饰的变量称静态变量或类变量;没有被static修饰的变量称之为实例变量

    当JVM加载类后,通过类名直接访问静态变量,类的所有实例共享一个静态变量,换个方式讲就是JVM只为静态变量分配一次内存,在加载类的过程中完成;而对于实例变量,每创建一个实例变量都会分配一个内存

  2.static方法

    静态方法只能访问所属类的静态成员变量和方法

  3.static代码块

    静态代码块:类中独立于类成员,JVM加载类的时候按照其先后顺序执行,无需实例化

三、static final

  1.static final 变量

    属于类的变量且只能赋值一次

  2.static final方法

    属于类的方法且不能被重写

  3.static final内部类

    属于外部类,且不能被继承

原文地址:https://www.cnblogs.com/gosun/p/6957487.html