黑马程序员技术交流社区
标题:
使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
[打印本页]
作者:
黄坚声
时间:
2012-5-9 20:08
标题:
使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
如题,谁能给我解答
作者:
周素强
时间:
2012-5-9 20:26
被final修饰的变量,这个变量其实引用的是对象的内存地址,如果你这个对象变了,那么这个变量引用的地址不也就变了吗,所以对象和引用都不能变。也是不可变的。
作者:
李啸
时间:
2012-5-9 21:05
[attach]2569[/attach]
无标题.png
(19.4 KB, 下载次数: 25)
下载附件
2012-5-9 21:05 上传
懂了吗
作者:
任睦强
时间:
2012-5-9 21:27
使用final修饰引用型变量,变量的值是固定不变的,而变量所指向的对象的属性值是可以改变的。
作者:
常万
时间:
2012-5-9 22:00
使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。
举个例子你就能看懂了:请看下面代码
final StringBuffer sb = new StringBuffer("aaa");
执行下面语句就会报错
sb =new StringBuffer("bbb");
但是执行下面语句就可以编译通过
sb.append("bbb");
作者:
黑马-王建雨
时间:
2012-5-9 22:56
final修饰的变量若是引用数据类型,该变量在栈内存中存放的是此对象的内存地址,故此对象不可变。对象的内容是可以变化的。如下代码:finally int [] arr = {1,2};
arr[1] = 0;
虽然arr的内容变了,但是变量arr内存的首地址没变。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2