i++比++i效率高吗,我倒觉得后者效率高。我不是问它们的区别,而是两者都能用的时候为什么都爱用i++
for (int i=0;i<100;i++)???很多书上的范例也这样??

解决方案 »

  1.   

    这两种方法是有区别的
    如你输入以下代码
        public void calculate()
        {
            int x=1;
            System.out.println(x++);
            System.out.println(++x);
        }输出的结果是 
       1
       3
    也就是x++不是马上就算出来结果的 而++x是马上就将x赋值了
      

  2.   

    做为赋值的右式结果不一样,++i,先+得到i,i++先得到i再++
      

  3.   

    Java不支持自定义类型的运算符重载,因此++只能作用于简单的内置类型上,比如int,short等。
    在这种简单的类型上,经编译器优化后,前自增和后自增在大多数情况下没有效率差别,比如在楼主给出的那个for循环的例子中,就不会有差别的。
      

  4.   

    for (int i=0;i <100;i++)
    =>  i = 0
        i < 100
        i++
    用++i 风格不好!
      

  5.   

    楼主说了不是问区别滴。我就喜欢用++i,需要i++时才用它。原因:c/c++转java的人,几乎都习惯用++i,因为运算符在c++是可以重载的,会导致i++效率下降,因为要多出一个临时变量。
    不过基本类型应该不存在这个问题,如楼上某位说的编译器优化。习惯就好。
      

  6.   

    for (int i=0;i <100;i++) 兄弟 光看这个 也看不出什么效率,在这里i++和++i都是一样的
    那楼主要这样问的话请问大家可以写成
    for (int m=0;m<100;m++) 
    为什么i的人多呢?
      

  7.   

    无他,习惯而已!PS:C++重载“++”后缀操作符增加一个参数导致效率降低的说法是错误的。
      

  8.   

    效率降低不是因为那个多出来的“参数”,而是因为重载实现中那个难以避免的临时变量。
    所以,在C++中,特别是在for循环这种两个都可以的情况下,应该养成写“++i”的习惯。
      

  9.   

    同意,只是大家平时的一种习惯而已,呵呵,其实效率方面没什么区别的。其实i++和++i,最后都当作i=i+1处理,没什么区别的。只不过i++是先计算这个表达式返回值。
      

  10.   


    原因相信应该是前辈们在这样用,我们学的时候老师多数这样用.我们也就这样用.
    好处:(我们一般使用到的功能都是先进行运算,然后进行+1操作.所以,当i++和++i没有区别的时候,i++更符合我们的思维方式.更受欢迎?!)int i,j;
    j=1;
    i=j++;//i=1,j=2.
    i=++j;//i=2,j=2.
      

  11.   

    很多人没看LZ问的不是区别
    而是为什么二者都可以的情况下用i++的人多。to LZ:
    i++ 读作i加加,都符合思路,多顺口。
      

  12.   


    晕,你自己实现过c++中的++操作符重载吗?
    一个自定义的对象,如果占内存很大,那么重载++操作符号时,后自增就要创建一个临时变量(这可不是int这样的临时变量啊),这个才是导致效率降低的关键,而不是你说的区分前自增后自增的参数。在嵌入式开发中,为了利用有限的内存和速度问题,循环中i++多用几次都受不了的。
      

  13.   

    如果大家都用++i了,楼主又该问为什么大家都喜欢用++i而不用i++了。
      

  14.   

    i++符合思维习惯啊,是后进行加一;
    而++i则是先进行加一;
    在某些情况下也是会用到++i的,看情况了
      

  15.   

    看了这些回复 ,对那些不看我问题就在那说废话,还什么正解之类的人表示强烈BS。+100分,只要是看了题目回答的人均给,让某些&*郁闷去。
      

  16.   

    习惯了,jf,还有始终感觉++i比i++复杂,为什么不更简单一些那,呵呵。
      

  17.   

    i++是先使用变量i再i+1;++i是先加一再使用i.至于为什么这个问题就不好说了,就好象你问为什么北方人喜欢面食,而南方人喜欢米饭一样,其实北方人吃米饭也还是饿不死的,南方人吃米饭照样能张膘,但是人家北方人就要吃馒头,南方人就要吃米饭.
      

  18.   

    偶习惯++i写++i的据说是C/C++遗留思想……如果是单独语句,++i和i++也没有区别,甚至编译器都将它们做一样处理。
      

  19.   

    随手吧 i+1,i++
    从来都不怎么写 1+i 这种结构。
      

  20.   

    LZ学过汇编吗?
    学过后你就会知道i++比++i需要用到的指令少,处于运行时间复杂度考虑。。SO
      

  21.   

    汇编——i++比++i需要用到的指令少!
    再者——都习惯用i++。
      

  22.   

    个人认为:
    不管++i还是i++的i的值都+1;
    没有多大的区别
    只在运算时具体分析