public class TestFinal {
private final String name;
TestFinal (String name) {
this.name = name;
}
public void fun() {
final String str;
str = "good";
if (str.equals("good")) {
//str = "very";//compile error
}
}
public void fun1(final String str) {
//str = "good";//compile error
}
}
final域在属性上表示不可变,方法上表示不能重载,类上,表示不能继承。那么在变量上初始化,分为
a、成员变量,定义的时候初始化or通过构造函数初始化;
b、方法内部的参数,可以不再定义是初始化,但是一旦初始化,就不能改变;
c、作为方法的参数,当方法被调用的时候就初始化了,后面就不能改变了;