OOP:变量范围的界限

时间:2016-10-22 02:01:59

标签: oop variables scope computer-science principal

考虑以下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行)。

但是这也提出了一个问题:范围是否一般定义为代码段中的所有变量(基本上是用括号定义的范围),还是单独为每个变量定义?

对范围的正确解释是什么,以及解释的理由是什么?

1 个答案:

答案 0 :(得分:1)

变量范围定义了可以访问变量的代码部分。 Java有几个不同的范围。你要问的是local variable block scope。 Java还有其他范围,如class scope

Java Language Spec

  

引入名称的每个声明都有一个范围(第6.3节),它是程序文本中可以用简单名称引用声明实体的部分。

所以这不仅仅是变量。类也受此限制(例如inner classes)。

至于你的具体问题。

  

范围通常定义为代码段中的所有变量(基本上范围由括号定义)

没有,但

  • 某些括号中定义的变量在
  • 之外不可见
  • 您无法在括号
  • 中定义两个具有相同名称的变量
  

为每个变量独立定义

每个自己的变量在定义之前对代码不可见,因此每个范围都不同

  

变量c的范围在哪些行上?第2-7行或第5-6行?

这是5-6。如果您在第3行编写类似System.out.println(c)的内容,编译器将显示错误。