非静态方法可以访问静态代码块中的变量 吗
时间: 2023-10-06 15:10:08 浏览: 94
关于C++静态成员函数访问非静态成员变量的问题
可以,非静态方法可以访问静态代码块中的变量。在 Java 中,静态变量和静态代码块属于类级别,而非静态方法属于对象级别,但是对象级别可以访问类级别的内容,因此非静态方法可以访问静态代码块中的变量。例如:
```java
public class MyClass {
static int num;
static {
num = 10;
}
private void printNum() {
System.out.println(num); // 在非静态方法中访问静态变量
}
public static void main(String[] args) {
MyClass obj = new MyClass();
obj.printNum(); // 输出:10
}
}
```
在这个例子中,静态代码块中定义了一个静态变量 `num` 并赋值为 10。在非静态方法 `printNum()` 中访问了该静态变量并输出。在 `main` 方法中创建一个 `MyClass` 对象,并通过该对象调用 `printNum()` 方法输出结果为 10。
阅读全文