java中使用final修饰一个变量时,是引用不能变还是引用的对象不能变?

是引用不能变,例如: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);
	}

 

 

你可能感兴趣的:(final修饰变量)