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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高亮亮 高级黑马   /  2013-10-30 10:06  /  1142 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 高亮亮 于 2013-10-30 13:05 编辑

final关键字含义是不可变。可以用来修饰类,成员变量,成员方法等。
但是遇到个不太想明白的情况,就是用final修饰一个数组,然后这个数组他是可以重新修改数组里面的值的?
final不是不可修改么?为什么?那既然可以修改,这个数组加上final修饰意义在哪呢?

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

8 个回复

倒序浏览
对这个数组本身不能变,也就是它的引用不能在指向其他的对象,但是其元素可以变。
finl  int[] a={1,2};
只是说你的a数组不能再指向其他数组对象,但它的数组中的内容是可以变的!

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
☆╰學不会☆╮ 发表于 2013-10-30 10:21
对这个数组本身不能变,也就是它的引用不能在指向其他的对象,但是其元素可以变。
finl  int[] a={1,2};
只 ...

那这个数组的长度可以改变么?
回复 使用道具 举报
☆╰學不会☆╮ 发表于 2013-10-30 10:21
对这个数组本身不能变,也就是它的引用不能在指向其他的对象,但是其元素可以变。
finl  int[] a={1,2};
只 ...

那这个数组的长度可以改变么?
回复 使用道具 举报
数组中的内容元素可以改变的 长度当然也能改变了、
回复 使用道具 举报
数组是引用类型的,final只是使它所指向的地址不变 但它指向地址里面的内容是可变的 如果修饰的是变量的话那就是变量不可变 要弄清楚它修饰的是引用类型变量还是基本类型变量

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
靓仔 中级黑马 2013-10-30 12:09:01
7#
首先告诉你数组时引用类型,被final修饰后,它的引用就不能指向其他对象了,但指向地址内容却发生了改变,如果final修饰常量的话,就变不了了。如final int x=2;就固定了。你要高清它是引用还是常量。就明白了

评分

参与人数 1技术分 +1 收起 理由
黄炳期 + 1

查看全部评分

回复 使用道具 举报
如果问题已经解决,请及时修改主题为“提问结束”
修改方法:
http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
楼主啊,你的问题,final 修饰数组,相当于定义了一个,指向含有N个元素数组的常量指针,指针中的地址不能变,但地址所指单元内容是可以修改的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马