1、方法作用域
直接在方法内部声明的变量,在声明之后的位置,方法内部都可以使用:
例如:
public class Main {
public static void main(String[] args) {
int x = 100;
System.out.println(x);
}
}
2、块作用域
代码块是指引用大括号{}
之间的所有代码。在代码块中声明的变量只能在声明变量行后面的花括号之间的代码中访问:
例如:
public class Main {
public static void main(String[] args) {
// 这里的代码不能使用x
{ // 代码块
// 这里的代码不能使用x
int x = 100;
// 这里的代码可以使用x
System.out.println(x);
} // 代码块的结束
// 这里的代码不能使用x
}
}
代码块可以单独存在,也可以属于if
,while
或for
语句。 对于for
语句,在语句本身中声明的变量,也可以在块的作用域内使用。
3、类作用域
类作用域是指在类内部声明的字段、方法等的有效范围。
public class Main {
public static void main(String[] args) {
System.out.println("Hello, World!");
System.exit(0); //success
}
}
class MyClass {
private int privateVar; // 只能在 MyClass 类内部访问
public int publicVar; // 在任何地方都可以访问
}
4、静态变量的作用域
静态变量(用 static
修饰的变量)属于类,而不是类的实例,它们在整个类中都是共享的。它们的作用域是类作用域,但它们的生命周期从类加载到程序退出。
public class Main {
public static void main(String[] args) {
System.out.println("Hello, World!");
System.exit(0); //success
}
}
class MyClass {
static int staticVar = 10; // 静态变量属于类 MyClass
}
5、嵌套类作用域
Java 支持类内部嵌套类。嵌套类可以访问外部类的实例成员,但外部类只能访问嵌套类的静态成员。
public class Main {
public static void main(String[] args) {
System.out.println("Hello, World!");
System.exit(0); //success
}
}
class OuterClass {
private int outerVar = 5;
class InnerClass {
void printOuterVar() {
System.out.println(outerVar); // 可以访问外部类的实例变量
}
}
}