关于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的值被更改了呢?疑惑啊
谁懂的给我讲讲
----------------解决方案--------------------------------------------------------
在对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);
}
}
}
就不行了
----------------解决方案--------------------------------------------------------
对哦 想起来了 犯了这么简单的错误~~
熬夜熬糊涂了~。
----------------解决方案--------------------------------------------------------
多监听 应该不太复杂 是不是真的熬糊涂了
我找了好几本书 也没给你找个贴切的例子 连国外的都翻了 上面也都是一笔代过 也不知道是不是这个不难
自己好好在理解理解.........
呵呵 .........
----------------解决方案--------------------------------------------------------
什么是多监听??
----------------解决方案--------------------------------------------------------
狐狸的意思 就是一个事件 设定多个监听器吧 ............
----------------解决方案--------------------------------------------------------