Java中静态和最终的区别

作者: Laura McKinney
创建日期: 2 四月 2021
更新日期: 16 可能 2024
Anonim
变量,原始数据类型,创建对象及为对象属性赋值,调用对象方法;返回类型及类型转换;返回类型及类型转换
视频: 变量,原始数据类型,创建对象及为对象属性赋值,调用对象方法;返回类型及类型转换;返回类型及类型转换

内容


静态和最终都是Java中使用的关键字。可以在创建类对象之前访问静态成员。当应用于类,方法和变量时,Final具有不同的效果。静态关键字和最终关键字之间的主要区别在于: 静态的 is关键字用于定义可以独立于该类的任何对象使用的类成员。 最后 关键字用于声明一个常量变量,一个不能被覆盖的方法以及一个不能被继承的类。

  1. 比较表
  2. 定义
  3. 关键差异
  4. 结论

比较表

比较基础静态的最后
适用于静态关键字适用于嵌套的静态类,变量,方法和块。Final关键字适用于类,方法和变量。
初始化在声明静态变量时不必强制对其进行初始化。在声明最终变量时必须对其进行初始化。
修改静态变量可以重新初始化。最终变量无法重新初始化。
方法静态方法只能访问该类的静态成员,并且只能由其他静态方法调用。最终方法不能被继承。
静态类对象无法创建,并且仅包含静态成员。最终类不能被任何类继承。
静态块用于初始化静态变量。Final关键字不支持此类阻止。

静态的定义

静态是关键字,适用于类,变量,方法和块。可以在类成员,类和块的名称前面分别使用“ static”关键字将类成员,类和块设为静态。当一个类成员被声明为静态成员时,它将对该类的所有其他成员变为全局成员。该类的静态成员不会按实例占用内存,即所有对象都共享相同的静态成员副本。静态成员可以独立于该类的任何对象使用。您可以在创建类的对象之前访问该类的静态成员。静态成员的最佳示例是main()方法,它被声明为静态,因此可以在任何对象存在之前调用它。访问类的静态成员的一般形式:


class_name.static_member //访问类的静态成员

在上面的代码中,class_name是其中定义了static_member的类的名称。静态成员可以是静态变量或静态方法

静态变量:

  • 对于该类的所有其他数据成员,静态变量的作用类似于全局变量。
  • 可以在类的任何对象存在之前访问静态变量。
  • 可以使用在其中定义了类名的静态变量后跟dot(。)运算符来访问静态变量。

静态方法:

  • 静态方法只能调用其他静态方法。
  • 静态方法只能访问静态数据。
  • 静态方法在任何情况下都不能称为“ this”或“ super”。
  • 可以使用在其中定义了类名的静态方法,后跟dot(。)运算符来访问静态方法。

静态类:

  • Java确实具有嵌套静态类的概念。不能将最外层的类设为静态,而将最内层的类设为静态。
  • 静态嵌套类无法访问外部类的非静态成员。
  • 它只能访问外部类的静态成员。

静态块:

加载类时,静态块仅执行一次。用于初始化类的静态变量。

C ++:

在C ++中,我们具有静态变量和静态函数的概念,而C ++不支持静态类。

C#:

C#还支持静态类,静态变量和静态类。

Java:

Java支持静态嵌套类,静态变量,静态方法。

决赛的定义

Final是适用于类,变量和方法的关键字。类,变量和方法使用关键字“ final”和其名称声明为final。一旦变量被声明为final;它不能在程序中进一步修改。最终变量必须在时间声明中初始化。最终变量不会按实例占用内存。类的所有对象共享最终变量的相同副本。


声明为final的方法不能被声明了final方法的该类的子类覆盖。当一个类声明为final时,其他类不能继承该final类。如果使用final关键字,则C ++,C#不支持该概念。 Java支持final关键字和Java的概念;类,变量和方法可以声明为final。

  1. static关键字适用于嵌套的静态类,变量,方法和块。另一方面,final关键字适用于类方法和变量。
  2. 静态变量可以随时初始化,而最终变量必须在声明时进行初始化。
  3. 静态变量可以重新初始化,而最终变量一旦初始化就永远不能重新初始化。
  4. 静态方法可以访问类的静态成员,并且只能由其他静态方法调用。另一方面,final方法永远不能被任何类继承。
  5. 静态块用于初始化静态变量,而final关键字不支持任何块。

结论:

当将static和final关键字应用于类,变量和方法时,它们可以解决不同的目的。