background image

开发 Java 系统程序员要注意的基本知识

• final 关键字到底修饰了什么 ?

   final 使得被修饰的变量 " 不变 " ,但是由于对象型变量的本质

是 引用 ,使得 不变 也有了两种含义 : 引用本身的不变,和引用
指向的对象不变。

  引用本身的不变 :

   final StringBuffer a=new StringBuffer("immutable");

   final StringBuffer b=new StringBuffer("not immutable");

   a=b;// 编译期错误

  引用指向的对象不变 :

   final StringBuffer a=new StringBuffer("immutable");

   a.append(" broken!"); // 编译通过