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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题,谁能给我解答

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 加油 ~~~

查看全部评分

6 个回复

倒序浏览
被final修饰的变量,这个变量其实引用的是对象的内存地址,如果你这个对象变了,那么这个变量引用的地址不也就变了吗,所以对象和引用都不能变。也是不可变的。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报

懂了吗
回复 使用道具 举报
使用final修饰引用型变量,变量的值是固定不变的,而变量所指向的对象的属性值是可以改变的。
回复 使用道具 举报
使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。
举个例子你就能看懂了:请看下面代码
final StringBuffer sb = new StringBuffer("aaa");
执行下面语句就会报错
sb =new StringBuffer("bbb");
但是执行下面语句就可以编译通过
sb.append("bbb");
回复 使用道具 举报
final修饰的变量若是引用数据类型,该变量在栈内存中存放的是此对象的内存地址,故此对象不可变。对象的内容是可以变化的。如下代码:finally int [] arr = {1,2};
                                                     arr[1] = 0;
虽然arr的内容变了,但是变量arr内存的首地址没变。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马