博客源为书写的载体,书写以对思维的缓存 正文

Java之final关键字


在Java的关键字中,static和final是两个我们必须掌握的关键字。不同于其他关键字,它们都有多种用法。而且在特定的环境下使用,可以提高程序的运行性能,优化程序的结构。下面我记录一下final关键字及其用法。

一:修饰变量

1.final修饰基本数据类型的变量,则该变量的值只能赋一次值且不允许修改,即变为常量。

>>> final String name = "丁仪";
>>>
name = "汪淼";
... 报错:Cannot assign a value to final variable 'name'

2.final修饰引用数据类型的变量,则初始化之后不能再指向另外一个对象,但对象的内容是可以修改。

// 初始化之后不能再指向另外一个对象
>>> final Person p = new Person();
>>> p = new Person();
... 报错:'Cannot assign a value to final variable 'p'
// 但对象的内容是可以修改
>>> p.name = "丁仪";
>>> p.age = 28;

3.final修饰类中的成员变量,必须在声明时或者构造方法中进行赋值,且赋值后不允许被修改。

4.final修饰方法中的局部变量,则使用前被赋值即可,且赋值后不允许被修改。

二:修饰方法参数

final修饰方法参数与修饰变量同理,在整个方法中都不允许改变参数的值。

public void getName(final String name){
   // 报错:Cannot assign a value to final variable 'name'
   
name = "王淼";
}

三:修饰类

final修饰类,则该类不允许被继承。

public final class TestFather{
   ...
}

// 报错:Cannot inherit from final 'TestFather'
public class TestSon
extends TestFather{
   ...
}

四:修饰方法(不能修饰构造方法)

final修饰方法,则该方法不允许被重写,但可以被重载。

public class TestFather{
   public final void getName(){
       ...
   }
}

public class TestSon
extends TestFather{
   //重写报错:overridden method is final
   public void
getName(){
       ...
   }
   // 可以重载
   public void getName(String name){
       ...
   }
}

五:最后

images (8).jpg