final 使数值恒定不变(基本类型),但用于对象应用时,fianl使引用恒定不变,一旦引用被初始化指向一个对象,那么就无法把它改为指向另一个对象,然而对象自身是可以被修改的。
public class HelpDemo {
public static void main(String[] args)throws Exception{
final StringBuffer sb=new StringBuffer("first");
System.out.println(sb);//打印结果:first
sb.append("second");
System.out.println(sb);//打印结果:firstsecond
}
}
sb 指向的是一个new 出来的StringBuffer对象,而StringBuffer不同于String(对象不可变),对象是可变的,执行append方法时,是在原来的对象上增加的,引用未改变,只是改变了对象的值。
|