java中++i和i++是否一样

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">今天同事之间在讨论String字符串拼接的效率问题,使用javap查看字节码,突然想看看++i和i++在字节码上的区别.</span>

代码:

int j = 0;

j++;

使用javap查看编译之后的字节码

0:   iconst_0
1:   istore_1
2:   iinc    1, 1
5:   return

代码:

int j = 0;
++j;


使用Javap查看编译之后的字节码
0:   iconst_0
1:   istore_1
2:   iinc    1, 1
5:   return
通过上面的字节码我们看到,如果在一个语句中单独使用前自增和后自增是一样的,也就是这两个语句不会有任何的效率差异,
但是如果我们将这个表达式放入某个大的表达式中,我们再看看!
代码:
int j = 0;
j = ++j;
通过javap查看编译之后的字节码
 0:   iconst_0
 1:   istore_1
 2:   iinc    1, 1
 5:   iload_1
 6:   istore_1
 7:   return
代码:
int j = 0;
j = j ++;

使用javap查看编译之后的字节码
0:   iconst_0
1:   istore_1
2:   iload_1
3:   iinc    1, 1
6:   istore_1
7:   return
通过上面的字节码我们可以看到++j是先增加,在将这个值load出来,在将这个值存储到内存中
,而后自增是先将这个值load出来在增加,最后将增加后的值存储到内存中
如果我们通过控制台打印出来,第一个结果是1,而第二个结果是0

最后将比较完整的代码贴上来:
import java.util.Random;
public class Test {
	public static void main(String[] args) {
		int j = 0;
		j = j++;
		System.out.println("后自增:"+j);
		int i = 0;
		i = ++i;
		System.out.println("前自增:"+i);
	}
}
结果是:
后自增:0
前自增:1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值