首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java i = i++和 j = i++ 的区别

由于i++i--的使用会导致值的改变,所以在处理后置的++和--的时候,java的编译器会重新为变量分配一块新的内存空间,用来存放原来的值, 而完成赋值运算之后,这块内存会被释放。...(1)对于j = i++的情况 ?   ...i的原始值存放在后开辟的内存,最后将这个值赋给j,进行j = i++运算之后,j会得到i的值,而i又将自加,所以,在释放内存之后,原来存放j和i的地方将得到的值分别是:j(此时的值等于初始i的值)和i...每一次的循环结束,用来保存i的原始值的内存的数据会被销毁,然后i的新的值又会被放在一段新的内存,在进行上述的循环,所以最终能够实现j的数据的增加。 (2)对于i = i++的情况 ?...总结:  Java编译器每次遇到自增(指的是i++)、自减(指的是i--)运算符的时候都会开辟一块新的内存空间来保存赋值之前j的值,即为缓存变量,然后再将这个换成变量的值赋给左边的变量。

1.2K100
您找到你想要的搜索结果了吗?
是的
没有找到

javai++ 和 ++i的区别

今天同事扔给我两道面试题,由于我2年前就接触过这道题,所以没啥意思,我看完后扔到一个交流群里,回答这道题的绝大部分人竟然都答错了;很多人很清晰的知道这两道题想考察面试者对 i++ 和 ++i 的理解...(这是一道典型的看着非常简单的题,但是不少人还是会因为粗心栽跟头) 第一题: int a = 0; for (int i = 0; i < 99; i++) {...= 0; i < 99; i++) { b = ++ b; } System.out.println(b); 我估计会有不少人做错,因为群里有开发三四年的人...i++ 和 ++i 在理论上的区别是: i++:是先把i拿出来使用,然后再+1; ++i :是先把i+1,然后再拿出来使用; 答案见下: 第一题:a=0 第二题:b=99 再升级一下 第三题...Integer a = 0; int b = 0; for (int i = 0; i < 99; i++) { a = a ++;

1.2K30

i = i++真的很简单?CC++,java,php探秘

for(int i = 0; i < 10; i++) { count1 = count1++; count2++; }...java执行结果.png PHP <?...count++是一个表达式,不同语言对于i++自增的表达式的处理机制可能是不一样的,首先说下在Java的处理方式的语言描述 int temp = count; //先把count的值拷贝到临时变量区...count++; //count的值加1 count = temp; //将temp的值返回给count 所以,在java语言中,不管循环多少次,count的值始终为0,保持初态,在java不要在单个的表达式对相同的变量赋值超过一次...在这里我不是自夸哈,我把这个拿出来和大家分享,因为之前我对这里的理解也有些简单,认为i++就是先赋值后运算,++i就是先运算后赋值,这大多是我受C语言和C++的影响,而在Java却不是这样的。

58650

For循环中,只能`i++`或者`++i`吗?

但是我想一次性+2,而i++只能累加1,于是我改成了这样。...var count=0; var count1=1; for(var i=1;i<=99;i+2){ count+=i; } document.write("1~99的奇数的和是"+count...很明显,这是死循环了,但是不应该啊,难道是i+2的问题? 于是搜索过后,恍然大悟。 因为i++,是有自加功能的,它的含义是i=i+1的缩写,它有两层含义,一是i+1,二是把得到的值再复赋值给i。...总之,不管出不出现错误提示,你写成i+1或者是sum+1毫无用处,也不会起到任何作用,它不能代替i++,或者sum++。...i++不是单纯+1,他存在了一个过程,i = i + 1,而这样就不是直接赋值。 至于为什么i + 2不行,因为他是一步到位,循环中这样i的值是没有任何变化的!

52310

java基础|验证i++的线程不安全

+的线程不安全 i++是我们从开始学写代码时就一直在写的一个语句,也时常有前辈说过,i++是线程不安全的,我们今天就来一起模拟下多个线程同时对i进行++操作 代码如下: import java.util.concurrent.CountDownLatch...= 0; i < 1000; i++) { Thread t = new Thread(runnable); t.start(); } /...+后i的值 System.out.println(counter.i); } /** * 使用内部类的方式,封装ii++操作 */ static class...TestCounter { int i = 0; void add() { i++; } } } 输出结果如下: 多次运行会有不同的结果 ?...DEMO总评 i++线程不安全是一个老生常谈的问题,但真动手写起代码,还是有不少坑的,在这份dome,有的小伙伴会把countDownLatch设置为100,也是可以的,思路不一样。

76220

为什么说++i的效率比i++高?

来源:公众号【编程珠玑】 作者:守望先生 网站:https://www.yanbinghu.com 前言 不知道你是否听说过++ii++快的说法,真的如此吗?...++ii++的区别 这两个表达式从我们初学编程语言的时候就会接触到。前者是自增后取值,后者是取值后自增。 我们看一个简单的例子。...可简单理解左值和右值: 左值,有名对象,可赋值 右值,临时对象,不可被赋值 运算符重载 在《运算符重载》一文已经说到了运算符的重载,通过前面的例子也发现了,对于内置类型,前置自增返回对象的引用,而后置自增返回对象的原值...void test() { int i = 0; i++; //++i; } 汇编: push rbp mov rbp, rsp mov DWORD PTR [rbp

1.1K20
领券