当然是0了,i+=i++ <=> i=i+i++ ,i一开始为0,运算后此时i也为0,如果后面再有关于i的运算,i就会变为1,但是这个语句后没有这样的运算,只有 System.out.println(i);  所以i为0了!

解决方案 »

  1.   

    i+=i++ <=>i=i+i++ <=>i=i+i ,i++? i应该为1 呀
      

  2.   

    i++是先运算在使i+1;而++i是先使i+1在运算。
    你System.out.println(i)实际上是显示了0(没有运算前i的状态)。
    你要使他显示1只要吧i+=i++改成i+=++i就行了。
    这是计算机的编程的基本知识阿。你要好好补补课了。
    :)祝你进步
      

  3.   

    ++ 比 += 优先级高
    i += i ++; 应该等价于 i += (i ++);
    但是我又有奇怪的发现:
    尝试以下:
    public class Test{
      public static void main(String[] args){
        int i = 0;
        i += (i ++); 
        System.out.println("i :" + i);
        System.out.println("i ++ :" + i++); // !!!
      }
    }结果:
    i :0
    i ++ :0
      

  4.   

    public class Test{
      public static void main(String[] args){
        int i = 0;
        i+=i++; //i=i++; /* 如果这儿是 j+=i++ , 那么在该步骤完成后i已经是1了,而j为0。但在本步骤中该算式右边的结果仍旧是0,你把0赋值给i,最后i当然就等于0了。    System.out.println(i);  //0?!!
      }
    }
      

  5.   

    这是i++ 与++i的区别。
    public class Test{
      public static void main(String[] args){
        int i,j = 0;
        j += i ++; 
        System.out.println("j+=:" + j);
        System.out.println("i :" + i);
     }
    }这是的j=0 i=1
      

  6.   

    public class Test{
      public static void main(String[] args){
        int i = 0;
        i+=i++; //i=i++; }
    i+=i++ <=> i=i+i++;
    i++与++i的区别是 i++先使用i的值,再使i加1,而++i,是先给i加1,在使用i值。i=i+i++ <=>i=0+0(此时由于i++运算,i=1,但随后i又被重新付值 i=0)
    如果这儿是 j+=i++ , 那么在该步骤完成后i已经是1了,而j为0.
      

  7.   

    Java里的i++和c中的不一样!Java要到这次的操作完全结束才行。
      

  8.   

    Java里的i++和c中的不一样?为什麽?都是先执行运算i 操作,然后i 值才进行加1操作。
      

  9.   

    这个问题不是解决了的吗? 看这个Java的字节码就知道了,就是楼顶的那个程序Compiled from Test.java
    public class Test extends java.lang.Object {
        public Test();
        public static void main(java.lang.String[]);
    }Method Test()
       0 aload_0
       1 invokespecial #1 <Method java.lang.Object()>
       4 returnMethod void main(java.lang.String[])
       0 iconst_0
       1 istore_1
       2 iload_1
       3 iload_1
       4 iinc 1 1
       7 iadd
       8 istore_1
       9 getstatic #2 <Field java.io.PrintStream out>
      12 iload_1
      13 invokevirtual #3 <Method void println(int)>
      16 return
      

  10.   

    我是这样认为的:通常的循环我们这样写
    for(int i=0;i<100;i++){
      if(i==0){
      System.out.println("i++是先执行i原来的值后才加1"); 
      }
    }
    就是说,在for语句里面,我们虽然在前面的“int i=0;i<100;i++”运用了i++,但是,第一个i仍然是i的初始值0,在随后的循环中,i才不断的加1; 这样,我相信大家就很好的理解为什么上面的例子会出现问题:
        i+=i++; 因为没有循环,里面的i++根本没有机会加1。 大家不要被欺骗了! :)
      

  11.   

    各位,请问一下在java 如何判断一个String mystr为空,急啊
      

  12.   

    String myString;//change myString's valueif (myString != null && (myString.trim()).equlas("")) {
          //has valid value
    } else {
          //null or equals to space("")
    }
      

  13.   

    你们可以试一下这个程序public class Test{
      public static void main(String[] args){
        int i,j = 0;
        j += i ++; 
        System.out.println("j+=:" + j);
        System.out.println("i :" + i);
     }
    }
    这里的结果为j=0 i=1 ,i在执行完j+=i++后,自动加1了。
      

  14.   


      String myString;//change myString's valueif (myString != null && !(myString.trim()).equlas("")) {
                          //^刚才漏了这个,呵呵。       //has valid value
    } else {
          //null or equals to space("")