当前位置: 首页 > 面试题库 >

范围和块之间有什么区别?

尹冠宇
2023-03-14
问题内容

我在书中看到了一段代码,内容如下:

x = 10;
if(x ==10) { // start new scope
int y = 20; // known only to this block
x = y * 2;
}

范围和块都一样吗?


问题答案:

作用域是您可以引用变量的地方。块定义了block scope一个变量,该变量在一个块内部定义,将仅在该块内部定义,并且在块结束后不能引用它。

因此,在这段代码中,如果您尝试执行以下操作:

x = 10;
if(x ==10) { // start new scope
int y = 20; // known only to this block
x = y * 2;
}

y = 5; // error y is out of scope, not it is not defined

因为这里拥有的是局部作用域
,所以java中的其他种类的作用域都是class scope(例如),所以类的成员具有类作用域,因此可以在类内部的任何地方访问它。

范围的基本规则是:

  1. 参数声明的范围是该声明在其中出现的方法的主体。
  2. 局部变量声明的范围是从声明出现的位置到该块的末尾。
  3. 在for语句的标头的初始化部分中出现的局部变量声明的范围是for语句的主体以及标头中的其他表达式。
  4. 方法或字段的范围是类的整个主体。这使类的非静态方法可以使用该类的字段和其他方法。


 类似资料:
  • 两者都返回一个列表,那么到底有什么区别呢?

  • 问题内容: 在此示例中: 无法编译为: 而被编译器接受。 这个答案说明唯一的区别是,与不同,它允许您稍后引用类型,似乎并非如此。 是什么区别,并在这种情况下,为什么不第一编译? 问题答案: 通过使用以下签名定义方法: 并像这样调用它: 在jls§8.1.2中,我们发现(有趣的部分被我加粗了): 通用类声明定义了一组参数化类型(第4.5节), 每种可能通过类型arguments调用类型参数节的类型

  • 问题内容: Python模块和Python包之间有什么区别? 问题答案: 模块是单个文件(一个或多个文件),可在一个导入下导入并使用。例如 包是目录中提供包层次结构的模块的集合。

  • 问题内容: 我已经看到许多项目使用 模块而不是 标准库中的模块。另外,有许多不同的模块。为什么要使用这些替代方法而不是标准库中的替代方法? 问题答案: 是 ,已添加到stdlib中。但是自从2.6中添加以来,它具有处理更多Python版本(2.4+)的优势。 的更新频率也比Python高,因此,如果您需要(或想要)最新版本,则尽可能使用它自己。 我认为,一种好的做法是将其中一个作为后备。

  • 问题内容: 我想查询日期范围内的elasticsearch文档。我现在有两个选择,两个都适合我。已经测试了他们两个。1.范围查询2.范围过滤器 由于我现在的数据集很小,因此无法测试它们的性能。两者有什么区别?哪个会导致更快地检索文档和更快地响应? 问题答案: 查询和过滤器之间的主要区别在于评分。查询将返回每个文档具有相对排名得分的文档。过滤器没有。这种差异使过滤器更快,有两个原因。首先,它不会产生

  • 问题内容: 我读了很多文档,并且越来越困惑。我基本上不知道 服务 指示 模组 我看到了很多自定义组件。有时他们使用指令,有时使用服务。它总是从模块开始。有人可以举例说明这三种类型之间的区别吗? 问题答案: 可以将模块视为连接其他许多事物的地方,例如指令,服务,常量等。可以将模块注入到其他模块中,从而使您可以高度重用。 编写有角度的应用程序时,您将拥有一个顶级模块,即您的应用程序代码(没有模板)。