以下代码的多个声明内声明变量的给出了一个错误,这是因为变量m被定义两次。环路VS相同的变量名
class one {
public static void main(String args[]) {
int m=10;
int m=10;
}
}
但当声明一个循环内完成,这是确定的,即使m
仍然被定义了两次。
class one {
public static void main(String args[]) {
for(int i=1;i<=2;i++) {
int m=10;
}
}
}
并且编译器不会返回错误消息。
你能解释一下两者之间的区别,以及如何来有时我可以声明同一个变量两次同样的方法中,有时不是?
嗯,*读取错误信息*。对于第一次使用无效的原因应该不言自明。然后,如果有剩下的问题,请*后确切的错误信息*。 – 2012-09-29 17:38:56
@adchilds这个术语似乎有误导性。就我所知,没有“覆盖”或“重新声明”。虽然证明引入了一个* new *变量绑定,但可以通过用final变量和匿名内部类嘲笑的闭包来观察。 (虽然我可能在这一点上是错误的,如果'final'被视为不超过匿名类的实例化副本)。 – 2012-09-29 17:43:50
为什么这会被低估?我发现这是一个非常有效的问题! – CKing