请考虑以下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行)。
但这也引发了这样的问题:范围是为代码中的所有变量(基本上是由括号定义的)泛化定义的,还是为每个变量单独定义的?
对范围的正确解释是什么,这种解释的理由是什么?
发布于 2016-10-22 08:03:42
变量作用域定义了可以访问变量的部分代码。Java有几个不同的作用域。你要问的是local variable block scope。Java还有其他作用域,如class scope。
还有Java语言规范。
每个引入名称的声明都有一个作用域(§6.3),这是程序文本的一部分,其中声明的实体可以通过一个简单的名称来引用。
所以这不仅仅是关于变量的。类也受此约束(例如,是inner classes)。
至于你的具体问题。
范围是为代码中的所有变量(基本上是由括号定义的范围)定义的。
没有,但是
为每个变量独立定义
是每个自己的变量在定义代码之前是不可见的,因此每个作用域不同
变量c的范围在哪些行上存在?第2-7行还是第5-6行?
是5-6。如果要在第3行中编写类似System.out.println(c)的内容,编译器将向您显示一个错误。
https://stackoverflow.com/questions/40187615
复制相似问题