麻烦高手详细解释一下++在前与++在后的区别,算法。我是菜鸟理解半天也没有搞懂。非常感谢。

解决方案 »

  1.   

    在 C++ 中, 后缀运算优先级高于前缀运算. X++   > ++X.Java 中不知道是不? 没有运算符重装,没有办法测试.
      

  2.   

    呵,还不迟,举个例子吧:
    public static void main(String[] args){
    i=0;
    i=i++
    System.out.println(i);
    }javap -c classname  //使用javap对类进行分解i++的情况                 ++i的情况
    iconst_0                   iconst_0
    istore_1                   istore_1
    iload_1                    iinc 1,1
    iinc 1,1                   iload_1
    istore_1                   istore_1JVM里面有两个存储区,一个是暂存区(是一个堆栈),另一个是变量区(iinc 1,1).
    语句istore_1是将堆栈中的值弹出存入相应的变量 区(赋值)
    语句iload_1是将变量区中的值暂存在堆栈中。
    因为i=i++;是先将i的值(0)存入堆栈,然后对变量区中的i自加1,这时i的值的确是1,但是随后的istore_1又将堆栈的值(0)弹出赋给变量区的i ,所以最后i=0;
    又因为i=++i;是先对变量区中的i自加1,然后再将变量区中i的值(1)存入堆栈,虽然最后执行了istore_1,但也只是将堆栈中的值(1)弹出赋给变量区的i,所以i=++i的结果是i=1