是引用不能变,例如:final StringBuilder sb = new StringBuilder("你好");在执行 sb = new StringBuilder("中国");时将会编译报错,这就说明使用final修饰一个变量时,是引用不能变。但执行sb.append("我爱你");时编译会通过。所以有人使用如下方式防止参数的值被修改是不能做到的,如果使用str.append()方法即可修改参数对象原来的初值。如:
public void temp(final StringBuilder str){
//str = new StringBuilder(); 编译错误
//执行下行代码可以修改str的值
str.append("dadada");
System.out.println("str = " + str);
}