黑马程序员技术交流社区

标题: final修饰问题 [打印本页]

作者: 徐西宏    时间: 2011-9-26 09:32
标题: final修饰问题
final修饰的变量不变,
但是final修饰的对象型变量是引用本身的不变,还是引用指向的对象不变?
求解释
作者: 匿名    时间: 2011-9-26 09:47
用final修饰的变量只赋值一次
作者: 匿名    时间: 2011-9-26 10:06
final使引用恒定不变,一旦引用被初始化指向一个对象,就无法再把它改为指向另一个对象,然而对象其自身是可以被修改的,
举个例子来说:
final StringBuffer a = new StringBuffer("abc");
                   a.append("def");
                   System.out.println(a);
这样是完全可以的,a所指向的对象内容被修改,但a与对象映射关系不变。

不能改变的是这个引用与对象之间的映射关系,而对象是可以被修改的。
final StringBuffer a = new StringBuffer("abc");
final StringBuffer b = new StringBuffer("def");
                   a = b;
这样做就是会出现错误的,引用a将被改变为指向其他对象,但a被final修饰,所以一定会出错




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2