java中的final变量介绍与实例

100 阅读2分钟

final keyword 被应用于variables,method, 和class 。其含义是一旦应用final,它的值或状态就不能改变。

什么是java中的final变量?

如果我们对字段或成员变量应用final关键字,这些变量就会被视为常量,这意味着一旦变量被创建,并被赋值,其值就不能被改变。

final int value=20;  
// Gives compile time error for the below line of code  
value=40;  

在上面的例子中:

  • 初始化最终变量的值=20
  • 下一行,将值改为40
  • 编译器抛出了一个错误Cannot assign a value to final variable 'value'

所以,只要字段的值一旦被初始化就不能改变,你就必须把字段作为final使用。

让我们来看看final对象

  final ArrayList strs = new ArrayList();
        strs.add("hello"); // no error
        strs = null; // an error
  • 在上面的例子中,创建了final arraylist变量
  • 通过添加add方法改变了arraylist的状态,这被接受,final对象可以被突变。
  • 下一行,将引用改为null,由于final引用不能分配给null或新对象,所以出现了编译错误。

什么是java中的final方法?

方法也可以用final 关键字来定义。一个final 方法不能在子类中被重写。

下面是一个final 方法的用法

class SuperClass {  
 public final void method1() {  
  
 }  
  
 public int method2() {  
  return 0;  
  
 }  
}  
  
class SubClass extends SuperClass {  
 // the following method throws Compile time exception as this method has  
 // been declared in Superclass.Final methods ca  
 public final void method1() {  
  
 }  
  
 // This works fine  
 public int method2() {  
  return 0;  
  
 } 

什么是java中的最终类?

如果我们把类标记为final,这个类就不能被其他类扩展。

这使得该类成为某些特定的安全类。
java.lang.Math类中的大多数类都是final类。
如果我们扩展final类,编译器会抛出一个错误。

下面是final类的例子

public final class SuperClass {  
  
}  
  
// the following class throws Compile time exception as the Superclass declared  
// as final  
  
class SubClass extends SuperClass {  
  
}  
  

Final作为方法的一个参数

你也可以将final 关键字的参数传递给方法。这意味着这些参数不能被改变,而且是方法的局部参数。

public void getValue(final int i){  
    
 }  

最终局部变量是否能提高性能

声明最终局部变量可以让编译器静态地优化代码并提高速度。