一、流程控制
1.java中的流程控制语句:顺序结构、分支结构、循环结构。
1)顺序结构:
执行时,按照代码的书写顺序执行。
2)分支结构:
根据特点的条件选择执行某一段代码,分支结构中不是所有代码都会被执行。
3)循环结构:
根据特定的条件重复执行某一段代码。
在循环结构中也不是所有代码都会被执行。
二、分支结构:
根据特点的条件选择执行某一段代码,分支结构中不是所有代码都会被执行1.简单的if语句:
语法:
if(表达式){//功能代码}
语法说明:
表达式:结构类型必须是boolean类型
执行顺序:首先判断表达式结果,当表达式结果为true时,执行功能代码。
2.if..else..语句:
语法:
if(表达式){//功能代码1}else{//功能代码2}
语法说明:
表达式结果是boolean类型
执行顺序:
先判断表达式结果,当结果为true是,执行代码1,否则执行代码2.
3.多重if..else..
1)嵌套式:
语法:
if(表达式1){
//功能代码1
if(表达式2){
//功能代码2
}else{
//功能代码3
}
}else{
功能代码4
}
2)简洁式:
语法:
if(表达式1){
//功能代码1
} else if (表达式2){
//功能代码2
}....
else{
// 代码功能n
}
switch...case...default..语句:
语法:
swicth(表达式){
case 常量标号1:
//功能代码1 break;
case 常量标号2://功能代码2 break;
....
default : 功能代码n break;
}
语法说明:表达式:非long整形,字符型,枚举类型
执行顺序: 先计算表达式的结果,将结果与每一个case后的常量标号进行对比,跟哪一个常量标号一致,就执行哪一个case后的功能代码,若与
所有的常量标号不一样,执行defaylt后的功能代码。
case语句的穿透性,如何避免case语句穿透,使用break关键字打破case语句的穿透性
当每一个case和default语句后都有break时,case语句的顺序不会影响执行结果
break关键字可以打破case语句的穿透性,但是break不是switch..case..default..语句的必要成分
default语句可以省略:每一个case常量标号都不匹配,那么不 做任何操作
三、循环结构:
根据特定的条件重复执行某一段代码1.最基础的循环:for循环
语法:for(表达式1;表达式2;表达式3){
//循环体
} 语法说明:
表达式1:循环的初始条件,表示循环从何时开始
表达式2:循环的结束条件,结果是boolean型,表示循环何时结束
表达式3:使初始条件趋近于结束条件的表达式
循环体:被重复执行的代码块
执行顺序:首先执行表达式1初始化循环的开始条件,判断表达式2,当表达式的结果为true时,执行循环体,执行表达式3,否则循环结束;第二次直接判断表达式2
for(表达式1;表达式2;表达式3){
表达式1可以省略,但是分号不可以省 --》for(;表达式2;表达式3){//循环体}---表达式前需要先把值声明并且给初始化}
表达式3可以省略,但是分号不能省略,必须在循环体的最好一条语句加上表达式3
for (表达式1;表达式2;){
// 循环体
表达式3}
}
一般情况下,不省略表达式二,因为这样会形成死循环,如果需要省略表达式2,则需要在代码段加入判断条件,使循环结束。
2. while循环
语法:
while(表达式){
//循环体
} 说明:表达式结果是boolean类型
执行顺序:
先判断表达式结果,若为true执行循环体,否则不执行
3.for循环和while循环的使用环境
当明确循环次数时,首选for循环
斐波那契数列
兔子问题 最开始有一对兔子,每次默认生兔子为一对,三个月后兔子可以开始繁殖小兔子,每对兔子每个月只能生一对,
1、问20个月后有多少兔子?
2、 问多少个月后兔子超过10000对?
见下图:
如图所示:每个月的兔子总和为前两个月的兔子总和相加,即m3=m2+m1;
1、20个月的兔子总共有多少?
class Demo05
{
public static void main(String[] args)
{
int m3=0;
int m2=1;
int m1=1;
for(int i=3;i<=20;i++){
m3=m2+m1;
m1=m2;
m2=m3;
}System.out.println(m3);
}
}
2、计算超过10000只是第几月?
class Demo05
{
public static void main(String[] args)
{ int m3=0;
int m2=1;
int m1=1;
for(int i=3;;i++){
m3=m2+m1;
m1=m2;
m2=m3;
if(m3>10000){
System.out.println(i);
break;
}
}
}
}
4.do while 循环
语法:
do{
//循环体
}while(也表达式);
语法说明:
执行顺序:第一次执行循环体,第一次判断表达式,若为true,第二次执行循环体,否则不执行。
5.while循环和do..while循环的区别:
while循环的循环体可能执行,也可能不执行
do..while循环中循环体至少会被执行1次。
6.增强for循环:
作用:遍历数组或集合使用
for(数据类型 中间变量:数组名(集合名)){//循环体}
四、流程控制中涉及到的关键字:
1、break关键字:1)打破case语句的穿透性,在switch..case..default..语句中使用。
2)表示跳出break关键字所在的循环。
2.continue关键字:
只能在循环中使用,表示结束所在的本次循环,开始下一次循环。