首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OOP:变量作用域的界

OOP:变量作用域的界
EN

Stack Overflow用户
提问于 2016-10-22 02:01:59
回答 1查看 62关注 0票数 2

请考虑以下java代码:

代码语言:javascript
复制
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行)。

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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)的内容,编译器将向您显示一个错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40187615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档