黑马程序员技术交流社区

标题: 关于final关键字用法 [打印本页]

作者: 高亮亮    时间: 2013-10-30 10:06
标题: 关于final关键字用法
本帖最后由 高亮亮 于 2013-10-30 13:05 编辑

final关键字含义是不可变。可以用来修饰类,成员变量,成员方法等。
但是遇到个不太想明白的情况,就是用final修饰一个数组,然后这个数组他是可以重新修改数组里面的值的?
final不是不可修改么?为什么?那既然可以修改,这个数组加上final修饰意义在哪呢?
作者: ☆╰學不会☆╮    时间: 2013-10-30 10:21
对这个数组本身不能变,也就是它的引用不能在指向其他的对象,但是其元素可以变。
finl  int[] a={1,2};
只是说你的a数组不能再指向其他数组对象,但它的数组中的内容是可以变的!
作者: 高亮亮    时间: 2013-10-30 10:27
☆╰學不会☆╮ 发表于 2013-10-30 10:21
对这个数组本身不能变,也就是它的引用不能在指向其他的对象,但是其元素可以变。
finl  int[] a={1,2};
只 ...

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

那这个数组的长度可以改变么?
作者: ☆╰學不会☆╮    时间: 2013-10-30 10:36
数组中的内容元素可以改变的 长度当然也能改变了、
作者: ixiangfeng    时间: 2013-10-30 11:14
数组是引用类型的,final只是使它所指向的地址不变 但它指向地址里面的内容是可变的 如果修饰的是变量的话那就是变量不可变 要弄清楚它修饰的是引用类型变量还是基本类型变量
作者: 靓仔    时间: 2013-10-30 12:09
首先告诉你数组时引用类型,被final修饰后,它的引用就不能指向其他对象了,但指向地址内容却发生了改变,如果final修饰常量的话,就变不了了。如final int x=2;就固定了。你要高清它是引用还是常量。就明白了
作者: 黄炳期    时间: 2013-10-30 12:18
如果问题已经解决,请及时修改主题为“提问结束”
修改方法:
http://bbs.itheima.com/thread-89313-1-1.html
作者: 赵许星    时间: 2013-10-30 12:31
楼主啊,你的问题,final 修饰数组,相当于定义了一个,指向含有N个元素数组的常量指针,指针中的地址不能变,但地址所指单元内容是可以修改的




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