变量作用域概述
- 作用域:成员变量大于局部变量
- 就近调用原则:成员变量和局部变量可以同名,但是调用变量是就近调用;
变量的作用域指的是变量在程序中可以使用的范围,也就是变量可以被访问的区域。在 Java 中,变量的作用域取决于变量的声明和定义的位置,它们分为以下几种类型:
-
类成员变量:类成员变量是定义在类中、方法外部的变量。它们的作用域是整个类,即在类的任何地方都可以使用。
public class MyClass { public int x; // 类成员变量 public void myMethod() { System.out.println(x); // 在方法中可以使用类成员变量 } }
-
类的静态变量:类的静态变量也是定义在类中、方法外部的变量。它们的作用域是整个类,不需要创建类的对象,即可使用。
public class MyClass { public static int x; // 类的静态变量 public void myMethod() { System.out.println(x); // 在方法中可以使用类的静态变量 } }
-
局部变量:局部变量是定义在方法或语句块内部的变量。它们的作用域仅限于定义它们的方法或语句块内部。一旦方法或语句块执行完毕,这些变量就会被销毁。
public class MyClass { public void myMethod() { int x = 10; // 局部变量,仅在 myMethod() 方法内可用 System.out.println(x); // 可以在方法内部使用 x } }
需要注意的是,不同作用域中变量的名称可以相同,但是这些变量是不一样的。在内层作用域中使用相同名称的变量时,会覆盖外层作用域的变量,即使用到的是内层作用域中的变量。
public class MyClass {
public int x = 5;
public void myMethod() {
int x = 10; // 内层作用域中的变量覆盖了外层的成员变量
System.out.println(x); // 输出 10
}
}