我总是对 javastatic中的andfinal关键字感到困惑。 __
static
final
它们有何不同?
我们先来看看静态变量和静态方法。
Class.variable
Class.methodName()
this
super
Java 也有“静态嵌套类”。静态嵌套类只是一个没有隐式引用外部类实例的类。
静态嵌套类可以有实例方法和静态方法。
Java 中没有顶级静态类。
main 方法是static因为在任何实例化发生之前,应用程序必须可以访问它才能运行。
一个final类不能被子类化。这样做是出于安全和效率的原因。因此,许多 Java 标准库类是final,例如java.lang.System和java.lang.String。一个类中的所有方法final都是隐式的final。
java.lang.System
java.lang.String
方法final不能被子类覆盖。这用于防止子类更改可能对类的功能或一致性至关重要的方法的意外行为。
final变量只能通过初始化程序或赋值语句初始化一次。它不需要在声明时初始化:这称为blank final变量。必须在声明它的类的每个构造函数的末尾明确分配一个类的空白最终实例变量;同样,一个空白的 final 静态变量必须在声明它的类的静态初始化器中明确分配;否则,两种情况都会发生编译时错误。
blank final
当在方法体中定义匿名内部类时,在该final方法范围内声明的所有变量都可以从内部类中访问。一旦它被赋值,最终变量的值就不能改变。