java - JAVA片段:输出说明

原文 标签 java

我正在查看Java代码段,而这个代码段我无法弄清为什么输出为2?

 package com.instanceofjava;     
    public class A{  
     static int a = 1111;
     static
     {
            a = a-- - --a;
     }        
     {
            a = a++ + ++a;
     }     
     public static void main(String[] args)  {     
           System.out.println(a);     
        }     
    }


有人可以解释为什么此代码段的输出为2。

最佳答案

由于您没有创建类的实例,因此仅执行静态初始化程序块(不执行实例初始化程序块中的表达式a = a++ + ++a;)。

首先,a初始化为1111(作为static int a = 1111;的结果)。

然后执行静态初始化程序块,并进行以下分配:

a = a-- - --a;


a--递减a并返回先前的值1111。
--a递减先前递减的值(1110)并返回新值1109。

因此,表达式的计算结果为:

a = 1111 - 1109 = 2

关于java - JAVA片段:输出说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32987381/

相关文章:

java - java.lang.NoSuchFieldError:namingStrategy

java - Keycloak 公共(public)客户端和授权

java - 在hadoop 2.7.3中将映射器更改为每个工作程序上的核心数

java - 如何用另一个JFrame中的数据更新JFrame?

java - 模型没有固有视觉表示的MVC

java - 从另一个APK获取资源

java - SQLite数据类型如何映射到Java?

java - java中的枚举容器

java - 用Java一次维护5个线程

java - 在Java中等待客户端响应的正确方法是什么?