Java中的变量作用域

241 阅读1分钟

学过C/C++的人应该知道这段代码是不会报错的,因为C/C++里面的局部变量可以覆盖比它更大范围的变量。

// C代码
void func(int a)
{
    int i;
    for(int i=0; i<a; i++)
    {
        //
    }
}

但是在Java中,这段代码会报错 java: 已在方法 func(int)中定义了变量 i。 因为:

  • 通常,一组大括号 { } 定义一个范围。
  • 在 Java 中,我们通常可以访问一个变量,只要它定义在与我们正在编写的代码相同的一组括号内,或者在定义变量的大括号内的任何大括号内。
  • 在任何方法之外的类中定义的任何变量都可以由所有成员方法使用。
  • 当一个方法具有与成员相同的局部变量时,可以使用“this”关键字来引用当前类变量。
  • 对于在循环终止后要读取的变量,必须在循环体之前声明。
// Java代码
public class Test {  
    public static void main(String[] args) {  
        func(5);  
    }  
    static void func(int a){  
        int i;  
        for(int i=0; i<a; i++){  
        System.out.println(i+1+" ");  
        }  
    }  
}

参考自Java 中变量的作用域 - GeeksforGeeks