昨天看到下面这段代码,分享出来给大家看看,大家也可以讨论讨论。 int i = 0; i = i++; System.out.println("i的值是 "+i); 根据我们通常所知道的后自增先使用后增加的道理,i++在使用后i自身会增加一个数值,初始值为0时 ...
问题 在 int i i i 语句中,i i 是线程安全的么 如果不安全,请说明上面操作在JVM中的执行过程,为什么不安全 说出JDK中哪个类能达到以上的效果,并且是线程安全而且高效的,简述其原理。 回答 语句 i i 不是线程安全的。 该语句执行过程如下, 先把 i 的值取出来放到栈顶,可以理解为引入了一个第三方变量 k,此时,k的值为i, 然后执行自增操作,i的值变为 , 最后执行赋值操作 i ...
2018-09-24 13:31 0 6373 推荐指数:
昨天看到下面这段代码,分享出来给大家看看,大家也可以讨论讨论。 int i = 0; i = i++; System.out.println("i的值是 "+i); 根据我们通常所知道的后自增先使用后增加的道理,i++在使用后i自身会增加一个数值,初始值为0时 ...
分析: 如果是全局变量,i++是不安全的,因为java在操作i++的时候,是分步骤做的,可以理解为:temp = i;temp2 = i+1;i=temp2;如果线程1在执行第一条代码的时候,线程2访问i变量,这个时候,i的值还没有变化,还是原来的值,所以是不安全的。 从更底层的角度讲,主要 ...
如果是全局变量,i++是不安全的,因为java在操作i++的时候,是分步骤做的,可以理解为:tp = i;tp2 = i+1;i=tp2;如果线程1在执行第一条代码的时候,线程2访问i变量,这个时候,i的值还没有变化,还是原来的值,所以是不安全的。 从更底层的角度讲,主要是因为i++这个操作 ...
由于i++和i--的使用会导致值的改变,所以在处理后置的++和--的时候,java的编译器会重新为变量分配一块新的内存空间,用来存放原来的值, 而完成赋值运算之后,这块内存会被释放。 (1)对于j = i++的情况 i的原始值存放在后开辟的内存中,最后将这个值赋给j ...
i++和++i都是i=i+1的意思,但是过程有些许区别: i++:先赋值再自加。(例如:i=1;a=1+i++;结果为a=1+1=2,语句执行完后i再进行自加为2) ++i:先自加再赋值。(例如:i=1;a=1+++i;结果为a=1+(1+1)=3,i先自加为2再进行运算) 但是在单独使用 ...
i++和++i 都是自增运算,本质上都是+1操作,不同点在于赋值和运算的顺序有所不同; 其实只要记住一条铁律 ++在前先运算,++在后先赋值; a = i++ 因为++在后, i先赋值a=i; i=i+1; a = ++i 因为++在前 , i+1先运算 i = i+1 a=1; ...
我们应该都知道i++和++i的区别是: ++i是先执行 i = i +1 再使用 i 的值,而 i++ 是先使用 i 的值再执行 i = i + 1; for循环的执行顺序如下: for(a;b;c) { d; } 进入循环执行a;//只是进入的时候执行 执行b; //条件为真 ...
学习目标: 理解i++和++i的区别 学习内容: 1、i++ / i- - i++/i- -:遇到 i++或 i- -,i先参与运算,然后 i 再自加或自减1 代码如下: 执行结果: 执行结果表明b是先和a进行比较运算,然后b再进行自增1 2、 ++i / - -i ++i ...