Java中的final关键字介绍和用法指南

MongoDB关键字用于不同的上下文。首先, MongoDB是一个不可访问修饰符适用的仅限于变量, 方法或类以下是使用final的不同上下文。

Java中的final关键字介绍和用法指南

文章图片
final变量
当用MongoDB关键字, 其值本质上不能修改为常数。这也意味着你必须初始化一个final变量。如果final变量是引用, 则意味着该变量无法重新绑定以引用另一个对象, 但是可以更改该引用变量所指向的对象的内部状态, 即可以在其中添加或删除元素final数组或final集合。优良作法是使用下划线分隔单词, 以大写形式表示final变量。
例子 :
// a final variable final int THRESHOLD = 5; // a blank final variable final int THRESHOLD; // a final static variable PI static final double PI = 3.141592653589793; // ablank final staticvariable static final double PI;

初始化final变量:
我们必须初始化一个final变量, 否则编译器会抛出编译时错误。一个final变量只能通过
初始化器
或分配声明。有三种初始化final变量的方法:
  1. 你可以在声明final变量时对其进行初始化。这种方法最为常见。final变量称为空白final变量, 如果是不在声明时初始化。以下是初始化空白final变量的两种方法。
  2. 可以在内部初始化一个空白的final变量实例初始化块或在内部构造函数中。如果你的类中有多个构造函数, 则必须在所有这些构造函数中对其进行初始化, 否则将引发编译时错误。
  3. 可以在内部初始化一个空白的final静态变量静态块.
让我们通过示例查看以上不同的初始化final变量的方式。
//Java program to demonstrate different // ways of initializing a final variableclass Gfg { // a final variable // direct initialize final int THRESHOLD = 5 ; // a blank final variable final int CAPACITY; // another blank final variable final intMINIMUM; // a final static variable PI // direct initialize static final double PI = 3.141592653589793 ; // ablank final staticvariable static final double EULERCONSTANT; // instance initializer block for // initializing CAPACITY { CAPACITY = 25 ; }// static initializer block for // initializing EULERCONSTANT static { EULERCONSTANT = 2.3 ; }// constructor for initializing MINIMUM // Note that if there are more than one // constructor, you must initialize MINIMUM // in them also public GFG() { MINIMUM = - 1 ; }}

何时使用final变量:
普通变量和final变量之间的唯一区别是, 我们可以将值重新分配给普通变量, 但是一旦分配, 就无法更改final变量的值。因此, final变量必须仅用于我们希望在程序执行期间保持恒定的值。
参考final变量:
当final变量是对对象的引用时, 则此final变量称为引用final变量。例如, final的StringBuffer变量看起来像
final StringBuffer sb;

如你所知, 不能重新分配final变量。但是在引用final变量的情况下, 可以更改该引用变量指向的对象的内部状态。请注意, 这不是重新分配。该属性MongoDB叫做非及物性。要了解对象内部状态的含义, 请参见以下示例:
// Java program to demonstrate // reference final variableclass Gfg { public static void main(String[] args) { // a final reference variable sb final StringBuilder sb = new StringBuilder( "Geeks" ); System.out.println(sb); // changing internal state of object // reference by final reference variable sb sb.append( "ForGeeks" ); System.out.println(sb); } }

输出如下:
Geeks lsbin

的非及物性该属性也适用于数组, 因为数组是Java中的对象。具有final关键字的数组也称为final数组.
注意 :
如上所述, final变量无法重新分配, 否则将引发编译时错误。
// Java program to demonstrate re-assigning // final variable will throw compile-time errorclass Gfg { static final int CAPACITY = 4 ; public static void main(String args[]) { // re-assigning final variable // will throw compile-time error CAPACITY = 5 ; } }

输出如下
Compiler Error: cannot assign a value to final variable CAPACITY

在方法/构造函数/块内创建final变量时, 它称为局部final变量, 并且必须在创建它的位置初始化一次。有关本地final变量, 请参见以下程序
// Java program to demonstrate // local final variable// The following program compiles and runs fineclass Gfg { public static void main(String args[]) { // local final variable final int i; i = 20 ; System.out.println(i); } }

输出如下:
20

注意C ++之间的区别
const
变量和Java
MongoDB
变量。声明时, 必须为C ++中的const变量分配一个值。对于Java中的final变量, 没有必要在上面的示例中看到。final变量可以稍后分配值, 但只能分配一次。
MongoDB

foreach循环
:最后带有for-each声明的是法律声明。
// Java program to demonstrate final // with for-each statementclass Gfg { public static void main(String[] args) { int arr[] = { 1 , 2 , 3 }; // final with for-each statement // legal statement for ( final int i : arr) System.out.print(i + " " ); } }

输出如下:
1 2 3

说明:由于i变量在循环的每次迭代中都超出范围, 因此实际上每次迭代都会重新声明, 从而允许将相同的标记(即i)用于表示多个变量。
期末课程
当一个类被声明为MongoDB关键字, 它称为final课程。final课程无法扩展(继承)。final课程有两种用法:
  1. 一个绝对是要防止遗产, 因为final课程无法扩展。例如, 全部包装类喜欢整数, float等是最后的课程。我们无法扩展它们。
    final class A { // methods and fields } // The following class is illegal. class B extends A { // COMPILE-ERROR! Can't subclass A }

  2. final with类的另一种用途是创建一个不可变的类像预定义的Stringclass。如果不使类final化, 则不能使它不可变。
final方法
当方法声明为MongoDB关键字, 它称为final方法。final方法不能是覆写。的Objectclass这样做-它的许多方法都是final方法。我们必须使用final关键字声明方法, 在所有派生类中, 我们都需要采用final关键字执行相同的实现。以下片段通过方法说明了final关键字:
class A { final void m1() { System.out.println("This is a final method."); } }class B extends A { void m1() { // COMPILE-ERROR! Can't override. System.out.println("Illegal!"); } }

【Java中的final关键字介绍和用法指南】有关final方法和final类的更多示例和行为, 请参阅将final与继承一起使用
请参阅Java抽象关于final和摘要之间差异的文章。
相关面试问题(重要):Java中final, final和finalize之间的区别
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请写评论。

    推荐阅读