Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
OOP:变量的界';s范围_Oop_Variables_Scope_Computer Science_Principal - Fatal编程技术网

OOP:变量的界';s范围

OOP:变量的界';s范围,oop,variables,scope,computer-science,principal,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 in

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

但这也引发了这样的问题:范围是为代码段中的所有变量定义的(基本上范围是用括号定义的),还是为每个变量独立定义的


范围的正确解释是什么?这种解释的理由是什么?

变量范围定义了可以访问变量的代码部分。Java有几个不同的作用域。您要询问的是
局部变量块范围
。Java还有其他作用域,如
类作用域

还有

每个引入名称的声明都有一个范围(§6.3),该范围是程序文本的一部分,在该程序文本中,声明的实体可以通过简单的名称引用

所以这不仅仅是关于变量。类也受此约束(例如,
内部类

至于你的具体问题

作用域是为一段代码中的所有变量定义的(基本上用括号定义作用域)

,但是

  • 某些括号中定义的变量在外部不可见
  • 不能在括号内定义两个同名变量
为每个变量独立定义

在定义之前,代码看不到每个变量,因此每个范围都不同

变量c的作用域存在于哪几行?第2-7行还是第5-6行


是5-6。如果在第3行中编写类似于
System.out.println(c)
的代码,编译器将向您显示一个错误。

5到6。范围以变量声明开始。如果在函数/方法中声明它,则它仅在此函数/方法中可见。如果在类中声明它,则每个类成员(该类中的函数/方法)都可以使用它。对于类范围的变量,也可以通过谷歌搜索
public
protected
private