在声明的时候赋值
i在第已经被赋值过了,所以这里会出现编译错误
|
1
2
3
4
5
6
7
8
9
10
|
public class HelloWorld {
public void method1() {
final int i = 5;//只能被赋值一次,
i = 10; //i在已经被赋值过了,所以这里会出现编译错误
}
}
|
在声明的时候没有赋值
如果在声明的时候未赋值,那么可以在后面代码进行唯一的一次赋值
|
1
2
3
4
5
6
7
8
9
10
11
12
|
public class HelloWorld {
public void method1() {
final int i;
i = 10; //i在第4行,只是被声明,但是没有被赋值,所以在这里可以进行第一次赋值
i = 11; //i在第6行已经被赋值过了,所以这里会出现编译错误
}
}
|
如果final修饰的是参数,能否在方法里给这个参数赋值?
|
1
2
3
4
5
6
|
public class HelloWorld {
public void method1(final int j) {
j = 5; //这个能否执行?
}
}
|
因为final int j是作为方法的参数被传入,在方法执行的时候会进行一次赋值,如果直接在方法中赋值,那方法调用的时候就是二次赋值了。