用final关键字修饰一个变量时,是引用不能变还是引用对象不能变?

用final关键字修饰一个变量时是引用对象不能变,引用内容还是可以改变的,如:

final StringBuffer strb=new StringBuffer("bifua");

strb.append("jhgio");

system.out.println(strb);

这样写是不会报错的,因为StringBuffer是一个字符串变量,它存放在堆中,修改StringBuffer的值不会修改StringBuffer在内存中的地址,只会修改变量本身的内容,

而这样写是会报错的:

final StringBuffer strb=new StringBuffer("bifua");

strb=new StringBuffer("jirg");

因为这样改变了变量strb在内存当中的地址

原文地址:https://www.cnblogs.com/xinxinjava/p/3060029.html