6.4.2 final局部变量

6.4.2 final局部变量

系统不会对局部变量进行初始化,局部变量必须由程序员显式初始化

  • 使用final修饰局部变量时,既可以在定义时指定默认值,也可以不指定默认值。
    • 如果final修饰的局部变量在定义时没有指定默认值,则可以在后面代码中对该final变量赋初始值,但只能一次,不能重复赋值;
    • 如果final修饰的局部变量在定义时已经指定默认值,则后面代码中不能再对该变量赋值。

不要在方法中对final形参赋值

因为形参在调用该方法时,系统根据传入的实参来对形参赋值,所以方法中不要再对final修饰的形参再次赋值。

实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class FinalLocalVariableTest
{
public void test(final int a)
{
// 方法中不能再对final修饰的形参赋值,下面语句非法
// a = 5;
}
public static void main(String[] args)
{
// 定义final局部变量时指定默认值,则str变量无法重新赋值
final String str = "hello";
// 下面赋值语句非法
// str = "Java";

// 定义final局部变量时没有指定默认值,则d变量可被赋值一次
final double d;
// 第一次赋初始值,成功
d = 5.6;
// 对final变量重复赋值,下面语句非法
// d = 3.4;
}
}