在书上看到一段代码,如下:
x = 10;
if(x ==10) { // start new scope
int y = 20; // known only to this block
x = y * 2;
}
作用域和 block 是否相同?
最佳答案
范围是您可以引用变量的地方。
一个 block 定义了一个 block 作用域
,在 block 内定义的变量将只在该 block 内定义,您不能在 block 结束后引用它。
所以在这段代码中,如果你尝试类似的东西:
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 中的其他类型的作用域是类作用域
(例如),类的成员具有类作用域,因此它可以在类中的任何位置访问。
范围的基本规则是:
- 参数声明的范围是方法体 声明出现的地方。
- 局部变量声明的范围是从 声明出现在该 block 的末尾。
- 局部变量声明的范围出现在 for语句头的初始化部分是 for 语句和 header 中的其他表达式。
- 方法或字段的范围是类的整个主体。这个 使类的非静态方法能够使用字段和其他 类的方法。
关于java - 范围和 block 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22575444/