黑马程序员_java自学学习笔记(二)----流程控制语句

黑马程序员_java自学学习笔记(二)----流程控制语句

android培训java培训、期待与您交流!

        人生就如同程序,每天按照既定的轨道走,每到遇到问题的时候就要进行选择,然后在不同的领域重复做不同的事,直到下一次选择的出现。人生大体就是由这样的机制组成的,丰富多彩的是内容,而抽象过程是很简单的也是很枯燥的。程序就是由以上人生的3个过程抽象出来的过程组成的,即顺序结构、分支结构、循环结构三大结构构成,所有的编程语言目前都具备也必须具备这样的流程控制方式。java也不例外。

        一、顺序结构

        程序从main函数进入,一步一步的向下执行,就是顺序结构。没有特殊词,没有特殊标示,完全按照既定步骤执行。遇到不认识的东西找相应文件,完事以后该进堆的进堆,该入栈的入栈。顺序结构是最基本的结构,没有特别的,没有要注意的。

        二、分支结构(含:选择结构)

          (1)    if(条件表达式) {
                            语句块A;

                   }

         其中"条件表达式"是一个可以求解的一个式子,并且结果一定要是boolean型的值。boolean值只有true和false两个,下面所有的“条件表达式”都是该意思。

        该式子意思是如果"表达式"的值是真的,那么执行语句块A,否则跳过语句块A直接向下执行。

        (2)      if(条件表达式){
                            语句块A;
                    }  else{
                            语句块B;

                    }

        该式子说明条件表达式为真,则执行A语句块,如果为假,则执行语句块B。也就是说,不管结果如何,必然有且只有一个语句块被执行。与(1)不同的是,如果语句块A的大括号下面接B语句块,那么,当表达式为假时,执行结果完全一样,跳过语句块A执行B;如果表达式为真时,那么执行完语句块A后,必然执行语句块B。

        (3)     if嵌套

                  if(条件表达式1) {
                           语句块1;
                  }
       else if(条件表达式2) {
                           语句块2;
                 }
       else if(条件表达式3) {
                           语句块3;
                }
       ……    ……

       else if(条件表达式n-1) {
                          语句n-1;
               }
       else {
              语句块n;

               }

        该语句对于选择比较多的情况下使用,系统会逐条判断条件是否成立,如果成立立即执行代码块,否则跳过代码块。从语句块1到语句块n,有且只有一个会被执行到。

        (4)     选择语句switch:

                  switch(表达式){

             case const1:
                       statement1;
                       break;

             case const2:
                      statement2;
                      break;
        …… ……
            [default:
                      statement default;
                      break;]
                   }

        该处的"表达式",不一定是条件表达式,具体的讲,一般用到switch语句,表达式一定不是一个条件表达式,是一个可判断值的变量,下面的const是表达式可能出现的值,冒号后面是当出现这样的值的时候要执行的动作。default是可选的,可以不填,default里面的代码是当表达式判断过上面所有的值之后,如果都没有符合的,就执行default里面的代码。

        我记得在某本书上看到过,不建议使用switch,因为貌似switch语句运行时,需要首先加载所有代码块,而比较耗内存,而if是先行判断,如果通过才加载相应的代码块,由于无法寻找,自己又不太确定,望看到的路过的懂的大神在留言里帮忙指正。

        另:千万不能忘记break语句,否则程序会从执行完的第一条开始,向下执行所有符合条件的语句。

        三、循环结构

        (1)      当型循环:

                   while(条件表达式) {
                              代码块A;
                   }

        当条件表达式为真时,执行A,执行完毕以后再次判断条件表达式,如果继续为真,则重复执行代码块A的操作,反复执行,到判断条件表达式为假时,跳过代码块A,执行下面的语句。

        (2)      直到型循环:

                   do {
                             代码块A;
                   } while (条件表达式);

        执行代码块A,然后判断条件表达式是否成立,如果成立,回到do继续执行A,直到表达式的值为假,继续向下执行。

        (1)、(2)两种循环的根本区别在于,(1)型循环先判断表达式真假,如果为假,直接跳过循环;(2)型循环,不管怎样先执行一遍代码块,再判断真假,代码块至少会被执行一遍。各种循环有各种循环的用处,不过个人还是比较喜欢(1)型循环,也就是当型循环,因为该循环安全性比较好。在后期使用迭代器(Iterator)遍历集合的时候,如果集合为空,那么第二种循环容易报错,而第一种不会有问题。

        (3)      万能循环for:

                   for(表达式1;条件表达式; 表达式2) {
                             代码块A;
                   }

        "万能循环"是我取的名字,这名字不规范,但是确实是功能最强大的一个循环语句。运行顺序是,执行表达式1,判断条件表达式,如果为真,执行代码块A,执行过后执行表达式2,然后再判断条件表达式,直到条件表达式为假,循环结束。

        表达式1一般是循环控制变量的赋值,表达式2一般是对循环控制变量的改变,使其可以使条件表达式为假。

        for循环之所以强大,是因为不管怎么写这个循环,它的执行顺序不变,表达式1执行一次,表达式2在每次循环体结束后执行,供n次,也就是循环次数;条件表达式会执行n+1次判断。这样就出现了很多用法,也就是各个表达式可以省略,但是循环体中一定要有判断和结束循环的方法。另外,表达式可以写成与循环完全没有关系的式子,只要确定自己的式子,放在表达式1的位置的是需要执行1次的,条件表达式位置的需要执行n+1次的,表达式2的位置的是需要执行n次的就都可以(但这用不好是很危险的,容易形成死循环)。

        三、break和continue

        (1)      break

        break主要针对循环(当然也有例外,比如刚刚的switch),目的是直接跳出循环,执行循环代码块后面的内容。

        (2)      continue

        continue直接针对循环,执行continue以后忽略continue后面所有的代码,直接跳回到循环开始,继续下一次的循环。

        以下是实例,实例摘自http://zhidao.baidu.com/question/13181586.html

        

public class BreakTest {
    public static void main(String args[]) {
        System.out.println("循环没有开始");

        System.out.println("现在开始测试continue");
        for (int i = 0; i < 3; i++) {
            System.out.println("开始第" + i + "次for循环");
            if (i == 1) {
                continue;
            }
            System.out.println("看看continue后这里执行了吗?");
        }
        System.out.println("continue测试完毕\n***********************");

        System.out.println("现在开始测试break");
        for (int i = 0; i < 3; i++) {
            System.out.println("开始第" + i + "次for循环");
            if (i == 1){
                break;
            }

            System.out.println("看看break后这里执行了吗?");
        }
        System.out.println("break测试完毕\n***********************");
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值