objective-c学习笔记第三章《objective-c循环结构与java中的区别》

书接上文。

这次讨论循环结构。所谓循环结构,就是在条件允许的前提下, 一个语句或者多个语句会无休止的运行下去,一直到条件达成为止。

 

oc中提供了三种循环语句,分别是,for,while和do while语句。

 

基本上而言,三种语句与java中的循环语句没有任何本质上的区别。

 

首先是for语句。

 

格式如下:

for (init_expression; loop_condition; loop_expression)

{

program statement

}

 

应该都不难理解,init_expression属于初始化语句,告诉计数器的初始值是多少,比如说变量i是计数器,可以写成 i=1。但是应该注意到的一点是,貌似oc中并不支持在循环体中加入变量定义,正如第一章中总结的那样,所有的变量都要在使用之前定义,例如java中就可以这样定义:

for (int i=1; i<100;i++){

int j++;

}

这样的好处是,有时候并不清楚在循环体中需要多少变量来维持这个循环的运转,当我们需要对这个变量个数进行改变的时候,不需要打开之前定义的类就可以直接使用。

 

很纠结阿。

 

所以如果在oc中写这段程序就需要变成这样:

 

//******code*****//

int i,j;

for (i=1;i<100;i++){

j++;

}

//******code*****//

 

以上这种写法在java中也可以使用,但是我更熟悉的还是第一种。方便阿。。。。

 

loop_condition 这个表达式规定了循环体中循环的次数,比如说如果我计数器的初始值是1 那么要循环100遍就是i<=100。

loop_expression 表达式规定了每一次循环结束之后,计数器要改变多少。

 

现在讨论一个非常纠结的问题,那就是 ++i 和 i++之间到底有什么区别。

简单的来说分两种情况,第一种情况,当程序员想让某变量的数值增加一或者减少一的时候,使用i++,++i 是没有任何区别的。最终都可以转换成i=i+1。同理,也就是说在上述的例子中,我同样可以吧i++换成++i,输出的结果是一样的。

 

第二种情况,就是在 i++和++i用在表达式之中,两者表达的含义就不一样了,比如说,有这样一个表达式i++<100,假如这个时候i=99,那么当我使用了i++的时候这个时候表达式的结果是true,也就是说,我i++的值依旧是原来的99,并没有进行加一操作。反之,如果是++i<100的话,表达式的值就false,也就是说,++i的值已经变成了99+1=100了。

 

总结来说,i++就是先用后加,而++i就是先加后用。

或者说,如果实在是搞不清楚到底应该是用那个,不如全部都换成i=i+1,或者直接使用i+1<100之类的形式,可以避免出现低级错误。

 

另外需要明确的一点是,在for循环后面只有一个语句的时候,可以不使用大括号,但是为了方便记忆,不如在输入完for语句之后强制性的跟上一个大括号。

 

while循环,格式如下:

while(expression)

{

program statement;

}

 

expression是判断循环进行下去的必要条件,当这个条件判断结果为true时,就循环,如果判断结果为false,跳出循环。

 

do while循环,格式如下:

do

{

program statement;

}

while(expression)

 

理解起来也很简单,就是将执行语句放到了前面,而循环是否进行下去的判断语言放到了最后,好处就是有些要考虑到程序健壮性的时候,可以考虑使用do while,无论用户的操作是否合理,都能给出提示。

 

 

break和continue语句。

continue基本没有使用过,我也觉得这个东西比较鸡肋,因为很容易出错,continue其实就是实现了在某处循环中因为一些特殊情况不想再局部循环,就使用continue语句,跳过部分的循环,进行下一次循环。总体来说,很鸡肋。

 

break倒是一个神器,很多时候都能用的到。

举个例子:

假如我们有一组数字,1.2 2.4 5.4 3.5 4 5.7 7.6 5 我们想从里面找到第一个整数,我们就可以使用break语句,在得到第一个整数以后就跳出循环,进行下一步操作。当然也可以加入一些判断语句,作为终止循环的标志。 

 

 

下面对for,while,还有do while进行一些使用心得的总结。

 

基本上,for语句一般都是在明确了循环次数的时候使用的循环语句。while和do while是当程序循环时,不知道到底需要循环多少次的时候才使用的语句。

 

我的个人使用习惯中比较排斥for语句,因为循环的时候很容易出错,其实所有的for语句都可以转变成while语句的,只不过在使用while语句判断的时候,累加器放到了程序体中,不是很容易识别,但是在编写的代码的时候,更符合我自己的思维习惯。

 

 

仅供参考。

 

 

 

求指教。

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值