JAVA片段: Output Explanation

标签 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 吗?

最佳答案

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

第一个 a 被初始化为 1111(作为 static int a = 1111; 的结果)。

然后执行静态初始化 block 并进行以下赋值:

a = a-- - --a;

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

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

a = 1111 - 1109 = 2

关于JAVA片段: Output Explanation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32987381/

相关文章:

java - 与仅使用字符串相比,在 FSM 中使用枚举是否有好处?

java - 无法使用 Postgres 存储函数获取 ID - int 类型的值错误

java - 在 JPanel 上绘制近距离 GPS 坐标

java - tomcat把web应用使用的txt文件存放在哪里

java - SimpleDateFormat 解析结果很奇怪

java - JSReport API 使用 Java 从响应中保存 PDF

java - 如何打印没有方括号的列表?

java - ftp4j:client.login 返回无法识别的 SSL 消息,明文连接?

java - java中InputStream和Reader之间的实际区别是什么

Java流,如何将函数应用于先前的结果