在java中为for语句添加括号和删除括号之间有什么区别?

时间:2015-12-27 08:34:51

标签: java

我在我的项目中尝试下面的代码。

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);} 之间有什么区别?

由于

3 个答案:

答案 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