控制流程

    与任何程序设计语言一样,java也用条件语句和循环结构来控制流程.

什么叫流程控制呢

    可以控制程序的执行流程

流程控制的分类

    顺序结构

        程序中最简单最基本的流程控制,没有特定的语法结构,按照代码顺序重上往下执行,大部分代码都是这样执行.

    选择结构

        又叫分支结构,选择结构有特定法的语法规则,代码要执行具体的逻辑运算进行判断,逻辑结果有两个,所以产生 选择,按照不同的语句执行

        JAVA提供了两种选择结构语句 if语句和有些笨重的switch语句

    if语句的三种格式

        单分支语句

        if(条件表达式){

             语句

        }

        第三天(下) 流程控制 if while swtich break continue_if

        双分支语句

        if(条件表达式){

            语句

        }else{

            语句

        }

第三天(下) 流程控制 if while swtich break continue_if _02

        多分支语句

        if(条件表达式){

            语句    

        }else if(条件表达式2){

            语句

        }else if(条件表达式3){

            语句

        }.......

        else{

            语句

        }

        

第三天(下) 流程控制 if while swtich break continue_ while _03

         注意:关系表达式无论是简单还是复杂,结果必须是boolean类型的.

                花括号中只有一条语句,括号可以省略,如果是多条不可以省略,建议不省略.

                也就是说没有括号时,只执行后面的一行代码.

                在双分支语句中else后面是没有条件表达式的.不会两个都不执行,也不会两个都执行,必须也只能执行一个判断

                多分支判断语句永远只会执行一个,如果多个条件都成立,只会执行第一个成立的语句整体的判断语句永远只会执行一个

         在所有条件都不满足的情况下,执行else语句

                

        if的嵌套

             只有当外层 if 的条件成立时,才会判断内层 if 的条件。
            if(条件表达式){

                if(条件表达式){

                    语句

                 }else{

                   语句

                 }

            }else{

                语句

            }

           这里只写了一种,几种if可以随意嵌套

第三天(下) 流程控制 if while swtich break continue_switch _04第三天(下) 流程控制 if while swtich break continue_switch _04

在处理多个选项时,if/else结构变动有些笨拙,所以在java中有和c完全一样的swtich语句

    switch(表达式){

        case值1:

            语句体

            break;

        case值2:

            语句体

            break;

        case值3:

            语句体

            break;

        ''''''

        default:

            语句体

            break;

     }

        注意:switch语句将从与选项值相匹配的case标签开始执行语句,直到遇到break标签,或者执行完整个switch,如果没有相应的case久执行default.

                default不是必须写的,也可以写在任何地方.

                switch括号中的表达式只能是×××,字符型,枚举类型的.    其实swich只支持一种数据类型,那就是整型,其他数据类型都是转换成整型之后在使用switch的

                case标签的类型为char,byte,short,int或者是他们的包装类

                                           java5以后可以为枚举类型  并且使用枚举类型是 不必在每个标签中指明枚举名

                                            java7开始,可以使字符串字面量

                                            后面的值必须是常量,不能有变

                可以把相同功能的case合并例如 case1:case2:System.out.println("");break;

switch的比较 进行switch的实际是哈希值然后通过使用equals方法比较进行安全检查,这个检查是必要的,因为哈希可能会发生碰撞。而hashCode()返回的正是整数型.

如果用string时出现

Cannot switch on a value of type String for source level below 1.7. Onlyconvertible int values or enum  variablesare permitted

一般是因为你导入的项目版本较低导致的;

解决办法:

右键你的项目--->Properties--->Progect Facets--->Java--->将其版本改为1.7及以上即可;

循环结构

     顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构

        java的循环主要有三种结构

            while循环

            do..while循环

            for循环

while循环

    while循环是最基本的循环,他的结构:

        while(布尔表达式){

         循环内容

         }

        只要表达式值为true就一直执行下去.先判断条件在循环

do...while循环

      对于 while 语句而言,如果不满足条件,则不能进入循环。但有时候我们需要即使不满足条件,也至少执行一次。

      do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。

    do{

            循环

        }while(条件表达式)

      注意:布尔表达式在循环体后面,也就是说没检测前就已经进行了一次循环的内容了.

for循环,

可以叫确定循环 是一种支持迭代的通用循环利用每次迭代后更新的计数器或类型变量来控制迭代次数.

一般有可以确定次数的循环使用for循环

for(初始化:布尔表达式:更新){

    代码

}

最先执行初始化步骤。可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空语句。

然后,检测布尔表达式的值。如果为 true,循环体被执行。如果为false,循环终止,开始执行循环体后面的语句。

执行一次循环后,更新循环控制变量。

再次检测布尔表达式。循环执行上面的过程。

尽管java和c++一样允许在for循环的个个部分放置任何表达式,但有不成文的规则,for语句中的3个部分应该对同一计数器变量进行初始化,检测和更新

注意:循环中如果有两个浮点数要格外的小心,例如:

        for(double x=0:x!=10:i+=0.1).. 可能永远不是结束,因为舍入误差,可能得不到精准的值,因为二进制不发准确表示1/10,所以x不会等于10

        在布尔表达式中定义的变量作只会用于整个for

        for内部定义的变量,不能再外面使用,所以想要在for循环以外使用循环技术器的最终值就需要将声明写在for外面.

for循环可以用while循环进行重写

中断控制流程语句

break;

break 主要用在循环语句或者 switch 语句中,用来跳出整个语句块。

break 跳出最里层的循环,并且继续执行该循环下面的语句。

continue:

continue 适用于任何循环控制结构中。作用是让程序立刻跳转到下一次循环的迭代。

在 for 循环中,continue 语句使程序立即跳转到更新语句。

在 while 或者 do…while 循环中,程序立即跳转到布尔表达式的判断语句。

在多重循环体忠,最内层中有break,跳出当前循环

带标记符的break   

Mark_x:    break 组合,关闭第x层以及这层包括的循环

  例:Mark_1:for(int i=0;i<10;i++)

 {


 Mark_2:foe(int j=0;j<i;<j++)

           break Mark_a;

  }