i++和++i的几种情况

1 篇文章 0 订阅
1 篇文章 0 订阅

先后问题:先赋值与后赋值的问题。

1.1直接操作 i++和++i

int i = 0;
int j = 0;
i++;
++j;
System.out.println(i);//1
System.out.println(j);//1

可以理解为就是单纯的进行了i=i+1这样的操作,下面的这种情况比较有意思,二者比较区分一下。

1.2 将 i++和++i赋值给其他变量 (会涉及到先后问题)

int i = 0;
int j = 0;
int m = 0;
int n = 0;

m = i++;
n = ++j;
System.out.println(m);//0 先赋值(后加一)
System.out.println(n);//1 先加一后赋值

2.在输出语句里面操作 i++和++i (会涉及到先后问题)

int i = 0;
System.out.println(i++); //0
System.out.println(++i); //2

这里的理解参考了网友的回答,即输出前和输出后;
i++是输出后值才发生变化,所以先输出0,但是存储的变量i的值是1;
++i是输出前值就发生变化,所以在1的基础上再加1,就输出了2;

这里需要和1.1区分一下 为什么输出的一个是1 一个是0?
如果是先i++, 然后再输出的就是1;
如果是在输出里i++的,最后输出的就是0;
我觉得可以这样理解,这里会涉及到先赋值后赋值的问题,在括号外i++的,这个时候变量存储的值已经+1,所以输出i是1;而直接输出的时候,i的值是0,这个时候没有操作,先赋值,就把0输出了,但是这个时候存储的已经变成1,意味着下次用的时候是1了。

3.for循环和while循环里面

int i = 0;
while(i<3){
i++;
System.out.println(i); //1 2 3
}

同1.1 单纯i=i+1 不涉及先后问题

for(int i=0;i<3;i++){
   System.out.println(i);// 0 1 2
}

i = 0 0<3 true 走循环;
i = 1 1<3 true 走循环 ;所以也没有什么先后问题,只是自然的循环逻辑。

以上是我遇到过的几种情况 觉得比较容易混淆 故放到这里供自己和大家学习;请大家根据自己的实际情况去理解,其实重要的还是知道有这么几种情况。

补充:
只有在输出语句(2)和赋值语句(1.2)中需要考虑先后的问题,java编程思想说的先执行再生成值,这个先后是什么先后也没说清楚,所以没有办法来根据他所说的先后来分析问题,我完全是自己试出来的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值