范围和块有什么区别?

Avi*_*Raj 13 java

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

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

代码和块都是一样的吗?

Moh*_*mel 13

范围是您可以引用变量的位置.块定义块内定义的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
Run Code Online (Sandbox Code Playgroud)

因为你在这里有一个本地范围
java中的其他种类范围class scope(例如),类的成员具有类范围,因此可以在类中的任何位置访问它.

范围的基本规则是:

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


Bal*_*der 7

Java语言规范:

14.2.块:

块是大括号内的语句,本地类声明和局部变量声明语句的序列.

6.3.宣言的范围

声明的范围是程序的区域,声明声明的实体可以使用简单的名称引用,只要它是可见的(第6.4.1节).

在块中,您可以声明变量.范围定义区域,您可以通过其简单名称访问声明的变量.