我在我的项目中尝试下面的代码。
import java.util.*;
public class Test{
public static void main(String [] args){
for(int i=0;i<=10;i++)
Integer k = new Integer(i);//ERROR
System.out.println("Hello Word");
}
}
但是,此代码段无法编译: 整数k = new Integer(i);
和 来自
Integer k = new Integer(i);
到
{Integer k = new Integer(i);}
此代码段确定
在我的代码段下整数k = new Integer(i); 和 {Integer k = new Integer(i);} 之间有什么区别?
由于
答案 0 :(得分:1)
请参阅this answer
每次循环循环时,您的初始声明超出范围,使其无效。
括号创建一个新范围。
范围定义
范围是指变量的生命周期和可访问性。怎么样 范围很大取决于声明变量的位置。对于 例如,如果变量在类的顶部声明,那么它将 所有类方法都可以访问。如果它在方法中声明 那么它只能用在那种方法中。
Here是范围和范围之外的一个很好的例子
// Demonstrate block scope.
class Scope {
public static void main(String args[])
{
int n1; // Visible in main
n1 = 10;
if(n1 == 10)
{
// start new scope
int n2 = 20; // visible only to this block
// num1 and num2 both visible here.
System.out.println("n1 and n2 : "+ n1 +""+ n2);
}
// n2 = 100; // Error! y not known here
// n1 is still visible here.
System.out.println("n1 is " + n1);
}
}
答案 1 :(得分:0)
根据Java规范,当没有范围时,您不能声明局部变量。在for中声明Integer k = new Integer(i)时,没有范围。 http://docs.oracle.com/javase/specs/jls/se7/html/jls-6.html
一个局部变量,以下之一 *块中声明的局部变量
*在for语句中声明的局部变量
答案 2 :(得分:0)
不允许变量声明!因为未确定变量的范围。因此,如果您添加括号,您的变量将在for
循环中确定为 local 。