java有两种基本的流程控制结构:分支结构(条件选择执行的代码)和循环结构(根据循环条件约束来执行代码)
顺序结构
最常见的程序结构就是顺序结构,从上到下依次执行中间没有判断和跳转,按照代码的前后顺序依次执行,前面的先执行,后面的后执行。但是在某些情况下我们需要的是依据某些情况具体执行某些代码段,因此我们有分支结构
分支结构
- if条件语句
在if里面的括号中使用布尔表达式或者布尔值来控制分支条件,如果满足布尔表达式那么执行if语句块的内容,否则执行else语句块内容(有时候可以省略else语句块)
一共有三种表达形式:
第一种只有if语句
1)if ( logic expression ) {
statement
}
第二种有if和else
2) if ( logic expression ) {
statement
} else {
statement
}
第三种有多个四个else if来控制多个分支转向
3) if ( logic expression ) {
statement
} else if ( logic expression ) {
statement
}
//0个或者多个else if语句
else {
statement
}
在这三种形式中if后面的括号中是一个逻辑表达式,表达式返回值只能是true或者false,后面的大括号表示一个代码块,通常被当成一个整体来执行(除非遇到return,break,countinue等关键字或者遇到异常)因此代码块也被称为条件执行体。如果if(logic expression)等代码块里面只有一句执行语句,那么大括号可以省略,因为单行语句可以视为一个整体。
- switch分支语句
switch语句由一个控制表达式和多个case标签组成,switch语句的控制表达式的数据类型不再是布尔类型而是byte,short,char,int四种整数类型,枚举类型,和java.lang.String类型,每个case标签后紧跟一个代码块,case作为这个代码块的标识
switch ( expression ) {
case condition1:{
statement ( s )
break;
}
case condition:{
statement ( s )
break;
}
……
case conditionN:{
statement ( s )
break;
}
default:{
statement( s )
}
}
在switch-case分支之中,首先对switch的表达式进行求值,然后对case condition依次进行匹配,匹配上的执行改代码块内的内容,均不匹配的执行default的代码块内容。每一个代码块最后都跟有一个break语句,原因是switch-case语句流程规定,求出表达式值,然后一一对比匹配之后程序开始执行case标签之后的代码不在判断之后的标签的条件是否匹配。除非遇到break才会结束。
循环结构
循环结构用于在满足循环条件下反复执行某一段代码,被反复执行的代码段被称为循环体,直到不再满足循环条件就结束循环,一般包含四个部分: 初始化语句,循环条件,循环体,迭代语句
- while循环
每次循环之前首先对循环条件求值,如果是true就进入循环部分
初始化条件语句
while ( 循环条件 ){
迭代语句
}
- do-while循环
与while语句类似,他的条件判断也在while中,每次循环时对条件进行检验,如果是true那么就继续执行。不同在于while是先判断循环条件,条件为真就执行循环体,但是do-while则是先执行循环体再判断循环条件,条件为真进行下一次循环。因此do-while至少进行一次循环。
初始条件语句
do{
迭代语句
}while ( 循环条件 )
- for循环
for循环更加简洁,大部分情况下for循环式可以代替while循环和do-while循环的
for (初始语句;循环条件;迭代语句) {
循环体
}