当前位置: 代码迷 >> Java相关 >> 关于final变量的问题 刚才的用的时候注意到的 有点疑惑
  详细解决方案

关于final变量的问题 刚才的用的时候注意到的 有点疑惑

热度:148   发布时间:2006-04-08 11:05:00.0
关于final变量的问题 刚才的用的时候注意到的 有点疑惑
final int i=5;

这么是定义一个常量吧? 也就是说 i 的值不可更改吧?

但是这个程序 如下:
class ForText
{
public static void main(String [] args)
{

for(int i=0;i<10;i++)
{
final int k=i;
System.out.println(k);
}

}
}
为什么K的值被更改了呢?疑惑啊
谁懂的给我讲讲
搜索更多相关的解决方案: final  变量  

----------------解决方案--------------------------------------------------------

在对k的初始化 虽然用了final 但是你把i赋给k 每次执行循环时 相当于初始化了i个常量 他们在堆内存中有不同的存储空间 所以不会出现错误
不知道我理解的对不对


----------------解决方案--------------------------------------------------------
是这样的吗?你确定?
----------------解决方案--------------------------------------------------------
应该是....一会问问冰封
----------------解决方案--------------------------------------------------------
多监听器 不是蛮会用 书上只有一个例子还不是蛮好懂

你有没有什么 例子 比较好懂的 解说也可以~
----------------解决方案--------------------------------------------------------
★王者至尊★  回答对的
因为你在每次循环的时候它所产生的对象
final int k=i;
都是一个新的,这是关于对象的有效范围的一个问题
在这里,这个int k只在当前的循环里有效,一出循环就不存在这个对象了
所以每次重进循环的时候,它都会产生一个新的对象,它的名字叫k
所以你每次都能对它赋值
但是如果你把它改成
class ForText
{
final int k=0;
public static void main(String [] args)
{

for(int i=0;i<10;i++)
{
k=i;
System.out.println(k);
}

}
}
就不行了

----------------解决方案--------------------------------------------------------
对哦 想起来了 犯了这么简单的错误~~
熬夜熬糊涂了~。
----------------解决方案--------------------------------------------------------
多监听 应该不太复杂 是不是真的熬糊涂了
我找了好几本书 也没给你找个贴切的例子 连国外的都翻了 上面也都是一笔代过 也不知道是不是这个不难
自己好好在理解理解.........
呵呵 .........
----------------解决方案--------------------------------------------------------

什么是多监听??


----------------解决方案--------------------------------------------------------

狐狸的意思 就是一个事件 设定多个监听器吧 ............


----------------解决方案--------------------------------------------------------
  相关解决方案