Java「局部变量作用域为类范围」正误判断及理解验证
结论
你的理解完全正确,待判断的题目表述为错误。
题目翻译
原英文题目:Scope of a local variable is within a class
翻译后:判断对错:局部变量的作用域在整个类范围内
概念说明
- Java中的局部变量是定义在方法、构造函数、或
if/for等包裹的独立代码块内的变量,作用域仅局限于声明它的直接外层词法块,出了这个块就会被销毁,无法被访问,完全不可能覆盖整个类范围。 - 你对实例变量的描述基本准确,补充区分:直接声明在类体中、不属于任何方法/代码块的非静态变量为实例变量,作用域覆盖类的所有非静态方法;带
static修饰的类变量才是真正的类级作用域,整个类内部均可访问。
代码验证示例
public class VariableScopeTest { // 实例变量,类的所有非静态方法都可访问 private int instanceNum = 10; public void testFunc() { // 局部变量,仅能在testFunc方法内部访问 int localNum = 20; if (true) { // 代码块级局部变量,仅能在当前if块内访问 int blockNum = 30; System.out.println(blockNum); // 正常输出 } // System.out.println(blockNum); 此处编译报错,变量已超出作用域 System.out.println(localNum); // 正常输出 System.out.println(instanceNum); // 正常输出 } public void anotherFunc() { // System.out.println(localNum); 此处编译报错,局部变量仅在testFunc内有效 System.out.println(instanceNum); // 正常输出 } }
内容的提问来源于stack exchange,提问作者Aritro Shome
相关产品推荐
相关产品推荐

