Java 静态作用域

标签 java

我有以下代码是从 Sun Certified Java Programmer 的模拟考试中截取的:

public class Static
{ 
      static 
      { 
            int x = 5; 
      }

      static int x,y; 
      public static void main(String args[]) 
      { 
            x--; myMethod(); 
            System.out.println(x + y + ++x); 
      }

      public static void myMethod() 
      { 
             y = x++ + ++x; 
      }
}

测试要求您提供这一行的结果:

System.out.println(x + y + ++x);

答案是3,但我不完全明白为什么是3。如果我完全忽略,我可以得到那个答案:

      static 
      { 
            int x = 5; 
      }

我的问题是,上面的代码片段是什么意思?为什么它不改变变量“x”的值?

最佳答案

那是一个静态初始化 block 。但这在这种情况下并不重要,因为它正在修改本地变量的值。

关于Java 静态作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10387581/

相关文章:

java - 确定 Java 应用程序是否为恶意软件

java - 在这种情况下,notifyAll 将如何工作?

java - 多个 Activity 的相同 Intent 过滤器

java - 傻眼了 Twilio API 发送简单的短信

java - 抽屉列表阵列适配器使应用程序崩溃

java - 在实用程序类或继承自基本 Activity 之间做出决定

java - 试图使 JTextField 不可编辑

java - POI 删除单元格的背景颜色

java - 是否有应用服务器供应商实现 JSR 88 : Java EE Application Deployment

java - 为什么对于大量数据,函数式比命令式快,而对于少量数据,函数式比命令式慢?