final 对于常量来说,意味着值不能改变,例如 final int i=100。这个i的值永远都是100。但是对于变量来说又不一样,只是标识这个引用不可被改变,例如 final File f=new File("c:\\test.txt");那么这个f一定是不能被改变的,如果f本身有方法修改其中的成员变量,例如是否可读,是允许修改的。形象的比喻:一个女子定义了一个final的老公,这个老公的职业和收入都是允许改变的,只是这个女人不会换老公而已。
final关键字修饰一个变量时,是引用变量不能变,引用变量所指向的对象中的内容还是可以改变的
但是字符串初始化之后也是不能变的,只能改变字符串引用的指向
public class Mypra {
public static void main(String[] args) {
final StringBuffer sb = new StringBuffer("hello java");
// sb = new StringBuffer("");//编译失败
//The final local variable sb cannot be assigned.
//It must be blank and not using a compound assignment
sb.append("hello word"); //通过编译:
System.out.println(sb);
}
}