java中的final 数组

欧美噶 2008-06-10 11:23:52
java中的final 数组内容为什么可以改变,
such as:
final int b[2]={1,2};
b[1]++;
System.out.println(b[1]);//结果是3
...全文
1953 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
欧美噶 2008-06-13
  • 打赏
  • 举报
回复
谢谢楼上的各位朋友,我懂了啊!
wensheng_zh2007 2008-06-11
  • 打赏
  • 举报
回复
类似于引用被final了
aipb2008 2008-06-10
  • 打赏
  • 举报
回复
java中的常量永远不能修饰对象的实际内容。

即:
final int b[2]={1,2};
b[1]++; //OK
b = new int(){1,2}; //NOT OK

int b[2]={1,2};
b[1]++; //OK
b = new int(){1,2}; //OK
lisl2003 2008-06-10
  • 打赏
  • 举报
回复
1楼
anqini 2008-06-10
  • 打赏
  • 举报
回复
对这个数组本身不能变,也就是它的引用不能在指向其他的对象,但是其元素可以变~
xql80329 2008-06-10
  • 打赏
  • 举报
回复

final使得被修饰的变量"不变",但是由于对象型变量的本质是“引用”,使得“不变”也有了两种含义:引用本身的不变,和引用指向的对象不变。

final StringBuffer a=new StringBuffer("immutable");
a.append(" broken!"); //编译通过
lovingprince 2008-06-10
  • 打赏
  • 举报
回复
final int b[2]={1,2};
的意思是这个b指向的地址不能改变,不是内容不能改变。你试一试 int c[2]={3,4}; b=c;肯定编译不过,因为不允许你改变他指向的地址。
becloud 2008-06-10
  • 打赏
  • 举报
回复
final int b[]只是说你的b数组不能再指向其他数组对象,
但它指向的数组的内容是可以变的!
yxb0317 2008-06-10
  • 打赏
  • 举报
回复
b定义的是引用,所以内容可以变
wang_qing_2008 2008-06-10
  • 打赏
  • 举报
回复
b[1]++ = 2++
qq278095755 2008-06-10
  • 打赏
  • 举报
回复
final int b[2]={1,2};
表示 b只能指向{1,2}这个数组,只能作为{1,2}的引用,不能指向其他的数组了.
但,{1,2}这个数组的内容是可以改变的.
sagezk 2008-06-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 becloud 的回复:]
final int b[]只是说你的b数组不能再指向其他数组对象,
但它指向的数组的内容是可以变的!
[/Quote]
简单明了。

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧