A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© heidoufus 初级黑马   /  2015-3-16 21:59  /  1240 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变呢?求解答!

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

15 个回复

倒序浏览
final应该是都不能变!!

点评

看看楼下的自己总结一下  发表于 2015-3-17 01:07

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1 不要相信直觉,要有依据。

查看全部评分

回复 使用道具 举报
是引用不能变,但可以修改指向的对象的属性

点评

谢谢  发表于 2015-3-18 18:51

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
引用不能变
回复 使用道具 举报
final不能改吧
回复 使用道具 举报
引用不变
回复 使用道具 举报
final的意思是最终,代表不能被继承,不能被再次赋值,只能被引用读取。相当于文件的只读模式。

评分

参与人数 1黑马币 +1 收起 理由
heidoufus + 1 赞一个!

查看全部评分

回复 使用道具 举报
如果final修饰的是引用型变量,则地址值不能被改变
回复 使用道具 举报
wenke 中级黑马 2015-3-17 08:27:57
9#
引用变量固定指向对象  绝不能再被改变  如果再建立新的对象只能是重新建立引用变量指向新建的对象    但引用变量可以修改对象内部非private成员变量

评分

参与人数 1黑马币 +1 收起 理由
heidoufus + 1 谢谢

查看全部评分

回复 使用道具 举报
使用final关键字修饰一个变量时,是指引用变量不能变,而引用变量所指向的对象中的内容还是可以改变的。这两个要区分好。有人在定义方法的参数时,可能想采用如下形式来阻止方法内部修改传进来的参数对象:
public void method(final StringBuffer param)
{
}
实际上,这是办不到的,在该方法内部仍然可以增加如下代码来修改参数对象:
param.append("a");
希望对你有所帮助。

评分

参与人数 1黑马币 +5 收起 理由
heidoufus + 5 很详细,谢谢解答

查看全部评分

回复 使用道具 举报
总结的真好,学习了。
回复 使用道具 举报
引用不能变
回复 使用道具 举报
总结得非常好,我也学习了,呵呵谢谢!
回复 使用道具 举报
相当于只能看。不能修改
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马