2015-12-27 95 views
1

我想在我的项目中尝试下面的代码。在for语句中删除括号和for括号之间有什么区别

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 =新的整数(I);

Integer k = new Integer(i); 

CHAGE到

{Integer k = new Integer(i);} 

这个片段将确定

我的问题:

什么整数k =新的整数之间的差别(我);{Integer k = new Integer(i);}在我的代码片段?

感谢

+2

一个很好的例子,什么是“错误”? – Stultuske

+0

如果我的答案帮助了你,请接受它。如果您仍然有问题,请告诉我,我会为您澄清事情。 :) – wuno

回答

0

变量声明是不允许的!因为变量的范围未确定。所以,如果您添加括号,您的变量将在您的for循环中的作用域本地

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); 
    } 
} 
相关问题