Java 为什么局部变量不能隐藏而全局变量可以?

标签 java scope

在Java中,为什么局部变量不能隐藏而全局变量可以? 例如:

public class Hello {
  static int x = 10; 
  public static void foo() {
    int x = 20; // Hides the global variable with the value of "20" within the  
     method foo. 
     }
  }

但这不可能:

public class Hello {
    public static void foo() {
      int x = 20; 
      int y = 1;
      if(x >= 20) {
       int y = 10; // Cannot hide this
     }
} 

我知道我无法隐藏在更内部的局部作用域中具有局部作用域的变量,但问题是为什么会发生这种情况?是因为Java的设计方式吗?还有其他类似的异常(exception)吗?

最佳答案

当局部变量和全局变量同名时,局部变量优先于全局变量。

如果你想打印局部变量的值,那么可以使用this运算符来完成。'this'不会被编译器添加,我们需要显式添加它来指定实例变量。

关于Java 为什么局部变量不能隐藏而全局变量可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47375606/

相关文章:

apache - 在使用 apache poi 替换 Microsoft 2007 (HWPFDocument) 文档的内容时需要帮助

Java For 循环根据条件递增或递减

java - Android 中两个 TextView 发生冲突

c# - 防止 C# 中的辅助类命名污染的推荐方法?

c - 指向作为值传递的参数的指针?

angularjs - 将参数传递给具有隔离范围的嵌套指令

java - 如何在 netbeans 中设置 KeyPress

Javascript 和 JQuery "this"范围错误

C 函数内的 block ?

java - 使用 Java 构建 JSON 会覆盖值