Java当中for循环的执行顺序

今天在写一个对数组操作的代码时,突然对for循环的执行方式产生了疑惑,以前在编程的时候只是对它只是使用而已,却没有对它的运行方式进行思考,仔细进行思考有助于对一些程序和算法的思考。

以下的代码为根据值去查询数组当中是否包含这个元素,如果包含就返回索引值,如果不包含该元素则返回-1(其中element是数组中有效元素的个数).

public int search(long value){
    int i;
    for(i = 0; i < this.element; i++) {
        if(value == this.arr[i] ) {
	     break;
        }
    }
    if(i == this.element) {
        return -1;
    } else {
        return i;
    }
}

通过以上的代码我们可以看出,在数组中没有这个值最终返回的i的值为element而不等于element-1,这是为什么呢?

下面就让我们一起来分析一下:

for(表达式1; 表达式2; 表达式3) {
     表达式4;
}

第一次循环:首先回去执行表达式1对变量进行初始化,之后去执行表达式2进行判断,是否符合表达式2的条件,如果符合,去执行表达式4,执行完表达式4,去执行表达式3(一般是对变量的加减操作)。

第二次循环:首先判断表达式2是否成立,如果成立,则去执行表达式4,之后去执行表达式3,。

.
.一直这样执行下去
.
.

最后一次循环的前一次循环:
首先判断表达式2是否成立,如果成立,则去执行表达式4,之后去执行表达式3,。

最后一次循环:
首先判断表达式2是否成立,结果不成立,则退出循环,所以,for循环控制的变量的值最终一定是不符合表达式2的要求的,因为在最后一次循环的前一次循环已经对数据进行了操作(比如++或–),所以才之前的例子中,最后i的值为element。

总结:总的来说,执行顺序是一致的,先进行条件判断(表达式2),再执行函数体(表达式4),最后执行表达式3。如此往复,区别在于,条件判断的对象,在第一次判断时,是执行表达式1,初始化对象,后续的判断对象是执行后的结果(表达式3)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值