被关键字final修饰的变量,不能改变的是引用的地址,但引用地址内的内容是可以改变的 对于: final int a = 2;//先在栈中创建引用变量a, 然后再栈中找是否有2,如果没有则把2放入栈中,最后把a指向2 a = 4;//编译不通过,此处把a指向了4即改变了地址 而对于 final StringBuffer str = new StringBuffer("111"); str.append("222");//不会报错,因为str指向的地址没有改变 相关文章: