为什么你们都喜欢用i++不用++i i++比++i效率高吗,我倒觉得后者效率高。我不是问它们的区别,而是两者都能用的时候为什么都爱用i++for (int i=0;i<100;i++)???很多书上的范例也这样?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这两种方法是有区别的如你输入以下代码 public void calculate() { int x=1; System.out.println(x++); System.out.println(++x); }输出的结果是 1 3也就是x++不是马上就算出来结果的 而++x是马上就将x赋值了 做为赋值的右式结果不一样,++i,先+得到i,i++先得到i再++ Java不支持自定义类型的运算符重载,因此++只能作用于简单的内置类型上,比如int,short等。在这种简单的类型上,经编译器优化后,前自增和后自增在大多数情况下没有效率差别,比如在楼主给出的那个for循环的例子中,就不会有差别的。 for (int i=0;i <100;i++)=> i = 0 i < 100 i++用++i 风格不好! 楼主说了不是问区别滴。我就喜欢用++i,需要i++时才用它。原因:c/c++转java的人,几乎都习惯用++i,因为运算符在c++是可以重载的,会导致i++效率下降,因为要多出一个临时变量。不过基本类型应该不存在这个问题,如楼上某位说的编译器优化。习惯就好。 for (int i=0;i <100;i++) 兄弟 光看这个 也看不出什么效率,在这里i++和++i都是一样的那楼主要这样问的话请问大家可以写成for (int m=0;m<100;m++) 为什么i的人多呢? 无他,习惯而已!PS:C++重载“++”后缀操作符增加一个参数导致效率降低的说法是错误的。 效率降低不是因为那个多出来的“参数”,而是因为重载实现中那个难以避免的临时变量。所以,在C++中,特别是在for循环这种两个都可以的情况下,应该养成写“++i”的习惯。 同意,只是大家平时的一种习惯而已,呵呵,其实效率方面没什么区别的。其实i++和++i,最后都当作i=i+1处理,没什么区别的。只不过i++是先计算这个表达式返回值。 原因相信应该是前辈们在这样用,我们学的时候老师多数这样用.我们也就这样用.好处:(我们一般使用到的功能都是先进行运算,然后进行+1操作.所以,当i++和++i没有区别的时候,i++更符合我们的思维方式.更受欢迎?!)int i,j;j=1;i=j++;//i=1,j=2.i=++j;//i=2,j=2. 很多人没看LZ问的不是区别而是为什么二者都可以的情况下用i++的人多。to LZ:i++ 读作i加加,都符合思路,多顺口。 晕,你自己实现过c++中的++操作符重载吗?一个自定义的对象,如果占内存很大,那么重载++操作符号时,后自增就要创建一个临时变量(这可不是int这样的临时变量啊),这个才是导致效率降低的关键,而不是你说的区分前自增后自增的参数。在嵌入式开发中,为了利用有限的内存和速度问题,循环中i++多用几次都受不了的。 如果大家都用++i了,楼主又该问为什么大家都喜欢用++i而不用i++了。 i++符合思维习惯啊,是后进行加一;而++i则是先进行加一;在某些情况下也是会用到++i的,看情况了 看了这些回复 ,对那些不看我问题就在那说废话,还什么正解之类的人表示强烈BS。+100分,只要是看了题目回答的人均给,让某些&*郁闷去。 习惯了,jf,还有始终感觉++i比i++复杂,为什么不更简单一些那,呵呵。 i++是先使用变量i再i+1;++i是先加一再使用i.至于为什么这个问题就不好说了,就好象你问为什么北方人喜欢面食,而南方人喜欢米饭一样,其实北方人吃米饭也还是饿不死的,南方人吃米饭照样能张膘,但是人家北方人就要吃馒头,南方人就要吃米饭. 偶习惯++i写++i的据说是C/C++遗留思想……如果是单独语句,++i和i++也没有区别,甚至编译器都将它们做一样处理。 随手吧 i+1,i++从来都不怎么写 1+i 这种结构。 LZ学过汇编吗?学过后你就会知道i++比++i需要用到的指令少,处于运行时间复杂度考虑。。SO 汇编——i++比++i需要用到的指令少!再者——都习惯用i++。 个人认为:不管++i还是i++的i的值都+1;没有多大的区别只在运算时具体分析 PrintStream 和PrintWriter,麻烦了,谢谢 java中hashmap问题 正则转意问题. 控制子窗口打开的位置? JDBC插入数据时,出错信息..不知道是什么原因? 多态问题 jtable中怎么实现隐藏行? 请教:初学JAVA,关于继承了父类的问题 在类里创建一个Socket连接后,为什么不能在不同方法中使用其getOutputStream()和getInputStream()??? 关于一个JBUILDER的问题,数据库的问题!!急 关于 synchronized 的疑问 我要全面学习java,请介绍好书。谢谢大家。侧重语言和思想方面的。
如你输入以下代码
public void calculate()
{
int x=1;
System.out.println(x++);
System.out.println(++x);
}输出的结果是
1
3
也就是x++不是马上就算出来结果的 而++x是马上就将x赋值了
在这种简单的类型上,经编译器优化后,前自增和后自增在大多数情况下没有效率差别,比如在楼主给出的那个for循环的例子中,就不会有差别的。
=> i = 0
i < 100
i++
用++i 风格不好!
不过基本类型应该不存在这个问题,如楼上某位说的编译器优化。习惯就好。
那楼主要这样问的话请问大家可以写成
for (int m=0;m<100;m++)
为什么i的人多呢?
所以,在C++中,特别是在for循环这种两个都可以的情况下,应该养成写“++i”的习惯。
原因相信应该是前辈们在这样用,我们学的时候老师多数这样用.我们也就这样用.
好处:(我们一般使用到的功能都是先进行运算,然后进行+1操作.所以,当i++和++i没有区别的时候,i++更符合我们的思维方式.更受欢迎?!)int i,j;
j=1;
i=j++;//i=1,j=2.
i=++j;//i=2,j=2.
而是为什么二者都可以的情况下用i++的人多。to LZ:
i++ 读作i加加,都符合思路,多顺口。
晕,你自己实现过c++中的++操作符重载吗?
一个自定义的对象,如果占内存很大,那么重载++操作符号时,后自增就要创建一个临时变量(这可不是int这样的临时变量啊),这个才是导致效率降低的关键,而不是你说的区分前自增后自增的参数。在嵌入式开发中,为了利用有限的内存和速度问题,循环中i++多用几次都受不了的。
而++i则是先进行加一;
在某些情况下也是会用到++i的,看情况了
从来都不怎么写 1+i 这种结构。
学过后你就会知道i++比++i需要用到的指令少,处于运行时间复杂度考虑。。SO
再者——都习惯用i++。
不管++i还是i++的i的值都+1;
没有多大的区别
只在运算时具体分析