zoukankan      html  css  js  c++  java
  • (a++)+(++a)=?

    public class Test{
    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;
     }
    }
    1.JVM加载class文件时,就会执行静态代码块,静态代码块中初始化了一个变量x并初始化为5,由于该变量是个局部变量,静态代码快执行完后变被释放。
    2.申明了两个静态成员变量x,y,并没有赋初值,会有默认出值,int类型为0,
    3.执行x--操作,变量单独进行自增或自减操作x--和--x的效果一样,此时x变为了-1
    4.调用MyMethod()方法,在该方法中对x和y进行计算,由于x和y都是静态成员变量,所以在整个类的生命周期内的x和y都是同一个
    5.y=x++ + ++x可以看成是y=(x++)+(++x),当++或者--和其它变量进行运算时,x++表示先运算,再自增,++x表示先自增再参与运算
    所以就时x为-1参与运算,然后自增,x此时为0,++x后x为1,然后参与运算,那么y=-1+1就为0,此时x为1
    6.执行并打印x+y + ++x运算方式和第5步相同,最后计算结果就为3.
  • 相关阅读:
    jenkins无法显示html样式问题解决
    自定的 HttpModule 为什么总是执行两次
    符号服务器
    ThreadContext
    ThreadContext
    从代码看 asp.net 处理过程
    关于动态编译
    System.Web.HttpContext.Current 跟踪分析
    使用另一种方式实现会话功能
    for 与 foreach 性能
  • 原文地址:https://www.cnblogs.com/Toddll/p/7367652.html
Copyright © 2011-2022 走看看