考虑以下java代码:
public class Main() { //Line 1
public static void main(String[] args) { //Line 2
System.out.println("Hello World."); //Line 3
//Line 4
int c = 10; //Line 5
System.out.println(c); //Line 6
} //Line 7
} //Loin 8
变量c的范围在哪些行上?第2-7行或第5-6行?
这就提出了一个问题,即变量范围是否可以在变量的声明本身之前。潜在地,可以将范围定义为可以使用变量的代码区域(第5-6行)。
但是这也提出了一个问题:范围是否一般定义为代码段中的所有变量(基本上是用括号定义的范围),还是单独为每个变量定义?
对范围的正确解释是什么,以及解释的理由是什么?
答案 0 :(得分:1)
变量范围定义了可以访问变量的代码部分。 Java有几个不同的范围。你要问的是local variable block scope
。 Java还有其他范围,如class scope
。
引入名称的每个声明都有一个范围(第6.3节),它是程序文本中可以用简单名称引用声明实体的部分。
所以这不仅仅是变量。类也受此限制(例如inner classes
)。
至于你的具体问题。
范围通常定义为代码段中的所有变量(基本上范围由括号定义)
没有,但
为每个变量独立定义
是每个自己的变量在定义之前对代码不可见,因此每个范围都不同
变量c的范围在哪些行上?第2-7行或第5-6行?
这是5-6。如果您在第3行编写类似System.out.println(c)
的内容,编译器将显示错误。