java - 范围和 block 有什么区别?

标签 java

在书上看到一段代码,如下:

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 中的其他类型的作用域是类作用域(例如),类的成员具有类作用域,因此它可以在类中的任何位置访问。

范围的基本规则是:

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

关于java - 范围和 block 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22575444/

相关文章:

java - 必须在 Dr.Java 中找到奇数,但总是出现缺少返回语句的错误

java - Jsp默认日期格式

java - 我是否需要处理或忽略由 OutputStream close() 函数触发的 IOException?

java - 选择具有特定属性的实体时出现 ClassCastException

java - 针对 Oracle AND Postgres 的 Java 应用程序

JavaFX:拖放绝对定位

java - 使用 StringBuilder 从提取的字符中构建字符串

java - 质数序列Java

javascript - Java 使用 XMLHttpRequest 的编码问题

java - hibernate中可以有多个cfg文件吗?