请指教final,很菜的问题

jyn01 2003-08-20 02:28:30
final所指的对象不能被改变,这是final的作用但以下的程序不太明白。
class Test {
final Integer i = new Integer(0);/*产生final的对象i*/
void add3 (Integer i) {
int val = i.intValue ();
val += 3;
i = new Integer (val); /*改变i得指向*/
System.out.println (i.intValue ());
}

public static void main (String args [] ) {
Test t=new Test();
t.add3 (t.i);
System.out.println (t.i.intValue ());
}
}
我觉得编译
i = new Integer (val); /*改变i得指向*/
会报错,可是没有。它是不是改变了i得指向呢?请赐教。
...全文
32 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gks_cn 2003-08-20
  • 打赏
  • 举报
回复
final是一个常量
503yuan 2003-08-20
  • 打赏
  • 举报
回复
同意楼上,后面的是void add3 (Integer i)参数!跟前面的没关系!
farmer0512 2003-08-20
  • 打赏
  • 举报
回复
这个i应该是void add3 (Integer i) 中的一个局部变量
不是 final Integer i = new Integer(0);这个全局变量
feyge 2003-08-20
  • 打赏
  • 举报
回复
void add3 (Integer i) {
int val = i.intValue ();
val += 3;
i = new Integer (val); /*改变i得指向*/
System.out.println (i.intValue ());
}

i = new Integer (val); 里的val 就是上一行的val+=3,不会报错啊

50,504

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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