用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在内存当中的地址