分支结构
任何复杂的程序逻辑都可以通过“顺序”、“分支”、“循环”三种基本程序结构实现。
1.“顺序”
{
语句1;
语句2;
}
正常执行顺序为先语句1,再语句2顺序执行。
2.“分支”
a.条件满足运行,不满足不运行—if结构
if(逻辑表达式){
语句1;
语句2;
}
说明:计算逻辑表达式的值,若为true,执行if语句块。
b.条件满足运行,不满足运行其他其他语句—if else
if(逻辑表达式){
语句1;
语句2;
}else{
语句3;
语句4;
}
说明:计算逻辑表达式的值,若为true,执行if语句块,否则执行else语句块。
c.多条件选择语句—switch-case语句
switch(整型表达式){
case 整型常量值1:语句1;break;
case 整型常量值2:语句2;break;
…
default:语句n;break(可有可无);
}
说明:
根据整型表达式的值,让程序进入不同的入口,常与break一起使用,遇到break,则会退出switch,否则会继续执行下一步。
jdk7.0之后的版本都支持String类型。
default语句后面一般跟case之外可能出现的情况,出现之后则执行语句n。执行完成则会退出switch。
3.“循环”
3.1 循环要素:
循环体,循环条件
3.2 循环方式:
while、do-while、for
3.3 使用条件:<被有规律的反复执行>
程序反复执行某些代码;
代码是相同或相似的语句;
3.4 写循环:
1>循环变量的初始化;
2>循环条件;
3>循环变量的改变;
3.5 语法说明
while循环
while(boolean表达式[boolean表达式结果为真,则执行代码块,否则退出]){
语句块(被重复执行的语句);
}
说明:可能一次都不执行,先判断后执行
先算boolean表达式;
一般情况下,循环条件中会存在使循环条件不满足的可能性,否则会成为死循环;
break用于循环体退出循环;
do-while循环
do{
语句块(被重复执行的语句);
}while(boolean表达式);
说明:至少执行一次;
先执行语句块,再执行boolean表达式,再执行语句块,循环执行;
无论boolean表达式结果是否为true,都先执行一次语句块;
先执行,再判断;
当while的初始化和修改一致时用dowhile可以简化语句的重复;
for循环
for(表达式1;表达式2;表达式3){
语句块(被重复执行的语句);
}
说明:
1.计算表达式1的值;
2.计算表达式2(逻辑表达式;如果值为true,则执行循环语句块,否则退出)的值;
3.执行循环体;
4.执行表达式3;
5.计算表达式2,如果值为true,则执行循环语句块,否则退出;
6.如此循环计算,直到表达式2的值为false
循环执行结束,如果表达式3为i++,那么变量i的值为i+1;
特殊用法:
表达式1语句可以无,但;不可少
表达式3语句可以无,但;不可少,且需要在循环体中体现,否则会陷入死循环
三个表达式都可以不写,但;不可少,会陷入死循环,语法支持
表达式2语句不可以用“,”隔开,1和3可以
3.6 其他
continue只能用于循环,作用:跳出此次循环(不执行剩余语句),进行下一次循环;
break用于循环,退出且终止循环。
循环语句选择:
1.如果业务转换为“当…”,优先使用while;
2.如果业务转换为“直到…”,优先使用do-while;
3.固定次数循环,使用for;
循环嵌套:外层一次,内层所有次<不建议使用,影响性能>
4.demo
public static void main(String args[]){
/**
* 循环语句 -- for循环
*/
for(int i=0;i<=3;i++){
System.out.println("***********循环开始**********");
System.out.println("for循转获取到的i的值为:"+i);
switchCaseDemo(i);
System.out.println("第"+i+"次循环结束");
}
/**
* 循环语句 -- do-while循环
*/
int j=0;
do{
System.out.println("-----------循环开始------------");
System.out.println("do-while循转获取到的j的值为:"+j);
ifElseDemo(j);
j++;
System.out.println("第"+j+"次循环结束");
}while(j<=3);
/**
* 循环语句 -- while循环
*/
int k=0;
while(k<=3){
System.out.println("++++++++++++循环开始++++++++++++++");
System.out.println("while循转获取到的k的值为:"+k);
ifDemo(k);
k++;
System.out.println("第"+k+"次循环结束");
}
}
/**
* if
* 满足则进入if代码块,否则进else
* @param k
*/
public static void ifDemo(int k){
if(k==0){
System.out.println("if语句k=0时:"+k);
}
}
/**
* if-else
* 满足则进入if代码块,否则进else
* @param j
*/
public static void ifElseDemo(int j){
if(j==0){
System.out.println("if语句j=0时:"+j);
}else{
System.out.println("else语句j!=0时:"+j);
}
}
/**
* switch-case
* 有break,则退出;
* 无break,则继续下一语句;
* @param i
*/
public static void switchCaseDemo(int i){
switch (i){
case 0:
System.out.println("当i==0时,输出:"+i);
break;
case 1:
System.out.println("当i==1时,输出:"+i);
break;
case 2:
System.out.println("当i==2时,输出:"+i);
default:
System.out.println("不满足case的校验参数时,输出:"+i);
}
}
声明:此笔记为2017年的个人笔记,如果和谁的笔记冲突请留言声明删除。