流程控制
1.顺序结构
顺序结构就是程序从上到下逐行地执行,中间没有任何判断和跳转
如果main方法的多行代码之间没有任何流程控制,则顺序总是从上向下依次执行,排在前面的代码
先执行,排在后面的代码后执行,这意味着,如果没有流程控制,Java方法里语句是一个顺序执行
流,则上向下依次执行每条语句
2.if分支语句
分支结构:
(1).if(logic statement){
statement;
}
(2).if(logic statement){
statement;
}else{
statement;
}
(3)if(logic statement){
statement;
}
eles if(logic statement){
statement;
}
//可以有零个或多个else if语句
else{
statement;
}
public class ifTest{
public static void main(String[] args){
int age=30;
if(age>40){
System.out.println(age+"大于40");
}
else{
System.out.println(age+"小于40");
}
}
}
//定义变量c,并为其赋值
int c=5;
if(c>4)
//如果c大于4则执行下面的执行体,将只有c--行代码为执行体
c--;
//下面十一号普通代码,不属于执行体
System.out.println("c大于4");
//此处的else将没有if语句,因此编译出错
else
//否则,执行下面的执行体,只要一行代码作为代码块
System.out.println("c不大于4");
public class IfErrorTest{
public static void main(String[] args){
int age=30;
if(age>20){
System.out.println("青年人");
}
else if(age>40){
System.out.println("中年人");
}
else if(age>60){
System.out.println("老年人");
}
}
}
//青年人
public class IfErrorTest{
public static void main(String[] args){
int age=30;
if(age>20){
System.out.println("青年人");
}
else if(age>40&&(!age>20)){
System.out.println("中年人");
}
else if(age>60&&!(age>20)&&(!age>20)&&(!age>40)){
System.out.println("老年人");
}
}
}
public class IfCorrectTest{
public static void main(String[] args){
int age=30;
if(age>60){
System.out.println("老年人");
}
else if(age>40){
System.out.println("中年人");
}
else if(age>20){
System.out.println("青年人");
}
}
}
3.switch分支语句
switch语句由一个一个控制表达式和多个case标签组成,和if语句不同的是,switch语句后面的控制表达式
的数据类型只能是short,char,byte,int四种类型,枚举类型和java.lang.String(Java7以后才允许),不能是boolean类型
switch(expression){
case condition:
{
statement(s)
break;
}
case condition:
{
statement(s)
break;
}
case condition:
{
statement(s)
break;
...
}
default:{
statement(s)
}
}
执行原理:
这种分支语句的执行原理是先对expression求值,然后依次匹配condition1,condition2,...等值,遇到匹配的值
即执行对应的执行体,如果所有case标签后的值都不能与expression表达式的值相同,则执行default标签后的代码块
public class SwitchTest{
public static void main(String[] args){
//声明变量score,并为其赋值为'c'
char score='c';
//执行switch分支语句
switch(score){
case 'A':
System.out.println("A");
break;
case 'B':
System.out.println("B");
break;
case 'C':
System.out.println("C");
break;
case 'D':
System.out.println("D");
break;
default:
System.out.println("default");
}
}
}
java7增强了switch语句的功能,允许switch语句控制表达式为java.lang.String类型的变量或者表达式
注意。只能是String类型不能是,StringBuffer或者StringBuilder类型
4.while循环
循环语句可以在满足循环条件下,反复执行某一段代码,这段代码被重复执行的代码称为循环体,当反复执行这个循环体的时候,
需要在合适的时候把循环条件改为假,从而结束循环,否则循环将一直执行下去,形成死循环
循环语句可能包含如下4个部分:
(1)初始化语句(init_statement):
一条或者多条语句,这些语句用于完成一些初始化工作,初始化语句在循环开始之前执行
(2)循环条件(test_expression):这是一个boolean表达式,这个表达式能决定是否执行循环体
(3)循环体(body_statement):这个部分是循环主体,如果循环条件允许,这个代码块将被重复执行,如果这个代码
块只有一行语句,则这个代码的花括号可以省略
(4)迭代语句(iterator_statement):这个部分在一次循环体执行结束后,对循环条件求值之前执行,通常用于控制
循环条件中的变量,使得循环在合适的时候结束
init_statement
while(test_expression){
statement;
test_statement;
}
public class WhileTest{
public static void main(Strig[] args){
//循环的初始化条件
int count=0;
//当count小于10时,执行循环体
while(count<10){
System.out.println(count);
//迭代语句
count++;
}
System.out.println("循环结束");
}
}
5.do while循环
do while循环与while循环的区别在于:while循环先判断循环条件,如果条件为真则执行循环体,而do while循环
则先执行循环体,然后才判断循环条件,如果循环条件为真,则执行下一次循环,否则终止循环
init_statement;
do{
statement;
[iterator_statement];
}while(test_expression);
public class DoWhileTest{
public static void main(Strig[] args){
//定义变量count
int count=1;
//执行do while循环
do{
System.out.println(count);
//循环迭代语句
count++;
}while(count<10);
System.out.println("循环结束");
}
}
即使test_expression循环条件为假do while循环也会执行循环体,因此do while循环的循环体至少执行一次
//定义变量count2
int count2=10;
//执行do while循环
do
//这行代码把循环体和迭代部分合并成一行代码
System.out.println(count2++);
while(count2<10);
System.out.println("循环结束");
6.for循环
大部分情况下,for循环可以替代while循环,do while循环
for(init_statement;test_expression;iterator_statement){
statement;
}
程序执行for循环时,先执行循环的初始化语句init_statement,初始化语句只在开始执行一次
每次执行循环体之前,先计算机test_expression循环条件的值,如果循环条件返回true,则执行循环体
,循环体执行后执行循环迭代语句,因此,对于for循环而言,循环条件总比循环体多执行一下,因为最后
一次执行循环条件返回false,将不再执行循环体
注意:
for循环的循环迭代语句并没有与循环体放在一起,因此即使在执行循环体时遇到continue语句结束本次循环
循环迭代语句也一样会得到执行
注意:
for循环和while循环,do while循环不一样,由于while,do while循环的循环迭代语句紧跟这循环体
因此如果循环体不能完全执行,如使用continue语句来执行本次循环,则循环迭代语句不会被执行,但for
循环的循环迭代语句并没有与循环体放在一起,因此不管是否使用continue语句来结束本次循环,循环迭代
语句一样会被执行
//死循环
public class ForErrorTest{}
public static void main(Strig[] args){
//循环的初始化条件,循环条件,循环迭代语句都在下面一行
for(int count=0;count<10;count++){
System.out.println(count);
//再次修改了循环变量
count*=0.1;
}
System.out.println("循环结束!");
}
//死循环
public class DeadForTest{
public static void main(Strig[] args){
//省略for循环的三个部分,循环条件将一直为true
for(;;){
System.out.println("xxxxxx");
}
}
}
7.嵌套循环
8.控制循环结构
1.顺序结构
顺序结构就是程序从上到下逐行地执行,中间没有任何判断和跳转
如果main方法的多行代码之间没有任何流程控制,则顺序总是从上向下依次执行,排在前面的代码
先执行,排在后面的代码后执行,这意味着,如果没有流程控制,Java方法里语句是一个顺序执行
流,则上向下依次执行每条语句
2.if分支语句
分支结构:
(1).if(logic statement){
statement;
}
(2).if(logic statement){
statement;
}else{
statement;
}
(3)if(logic statement){
statement;
}
eles if(logic statement){
statement;
}
//可以有零个或多个else if语句
else{
statement;
}
public class ifTest{
public static void main(String[] args){
int age=30;
if(age>40){
System.out.println(age+"大于40");
}
else{
System.out.println(age+"小于40");
}
}
}
//定义变量c,并为其赋值
int c=5;
if(c>4)
//如果c大于4则执行下面的执行体,将只有c--行代码为执行体
c--;
//下面十一号普通代码,不属于执行体
System.out.println("c大于4");
//此处的else将没有if语句,因此编译出错
else
//否则,执行下面的执行体,只要一行代码作为代码块
System.out.println("c不大于4");
public class IfErrorTest{
public static void main(String[] args){
int age=30;
if(age>20){
System.out.println("青年人");
}
else if(age>40){
System.out.println("中年人");
}
else if(age>60){
System.out.println("老年人");
}
}
}
//青年人
public class IfErrorTest{
public static void main(String[] args){
int age=30;
if(age>20){
System.out.println("青年人");
}
else if(age>40&&(!age>20)){
System.out.println("中年人");
}
else if(age>60&&!(age>20)&&(!age>20)&&(!age>40)){
System.out.println("老年人");
}
}
}
public class IfCorrectTest{
public static void main(String[] args){
int age=30;
if(age>60){
System.out.println("老年人");
}
else if(age>40){
System.out.println("中年人");
}
else if(age>20){
System.out.println("青年人");
}
}
}
3.switch分支语句
switch语句由一个一个控制表达式和多个case标签组成,和if语句不同的是,switch语句后面的控制表达式
的数据类型只能是short,char,byte,int四种类型,枚举类型和java.lang.String(Java7以后才允许),不能是boolean类型
switch(expression){
case condition:
{
statement(s)
break;
}
case condition:
{
statement(s)
break;
}
case condition:
{
statement(s)
break;
...
}
default:{
statement(s)
}
}
执行原理:
这种分支语句的执行原理是先对expression求值,然后依次匹配condition1,condition2,...等值,遇到匹配的值
即执行对应的执行体,如果所有case标签后的值都不能与expression表达式的值相同,则执行default标签后的代码块
public class SwitchTest{
public static void main(String[] args){
//声明变量score,并为其赋值为'c'
char score='c';
//执行switch分支语句
switch(score){
case 'A':
System.out.println("A");
break;
case 'B':
System.out.println("B");
break;
case 'C':
System.out.println("C");
break;
case 'D':
System.out.println("D");
break;
default:
System.out.println("default");
}
}
}
java7增强了switch语句的功能,允许switch语句控制表达式为java.lang.String类型的变量或者表达式
注意。只能是String类型不能是,StringBuffer或者StringBuilder类型
4.while循环
循环语句可以在满足循环条件下,反复执行某一段代码,这段代码被重复执行的代码称为循环体,当反复执行这个循环体的时候,
需要在合适的时候把循环条件改为假,从而结束循环,否则循环将一直执行下去,形成死循环
循环语句可能包含如下4个部分:
(1)初始化语句(init_statement):
一条或者多条语句,这些语句用于完成一些初始化工作,初始化语句在循环开始之前执行
(2)循环条件(test_expression):这是一个boolean表达式,这个表达式能决定是否执行循环体
(3)循环体(body_statement):这个部分是循环主体,如果循环条件允许,这个代码块将被重复执行,如果这个代码
块只有一行语句,则这个代码的花括号可以省略
(4)迭代语句(iterator_statement):这个部分在一次循环体执行结束后,对循环条件求值之前执行,通常用于控制
循环条件中的变量,使得循环在合适的时候结束
init_statement
while(test_expression){
statement;
test_statement;
}
public class WhileTest{
public static void main(Strig[] args){
//循环的初始化条件
int count=0;
//当count小于10时,执行循环体
while(count<10){
System.out.println(count);
//迭代语句
count++;
}
System.out.println("循环结束");
}
}
5.do while循环
do while循环与while循环的区别在于:while循环先判断循环条件,如果条件为真则执行循环体,而do while循环
则先执行循环体,然后才判断循环条件,如果循环条件为真,则执行下一次循环,否则终止循环
init_statement;
do{
statement;
[iterator_statement];
}while(test_expression);
public class DoWhileTest{
public static void main(Strig[] args){
//定义变量count
int count=1;
//执行do while循环
do{
System.out.println(count);
//循环迭代语句
count++;
}while(count<10);
System.out.println("循环结束");
}
}
即使test_expression循环条件为假do while循环也会执行循环体,因此do while循环的循环体至少执行一次
//定义变量count2
int count2=10;
//执行do while循环
do
//这行代码把循环体和迭代部分合并成一行代码
System.out.println(count2++);
while(count2<10);
System.out.println("循环结束");
6.for循环
大部分情况下,for循环可以替代while循环,do while循环
for(init_statement;test_expression;iterator_statement){
statement;
}
程序执行for循环时,先执行循环的初始化语句init_statement,初始化语句只在开始执行一次
每次执行循环体之前,先计算机test_expression循环条件的值,如果循环条件返回true,则执行循环体
,循环体执行后执行循环迭代语句,因此,对于for循环而言,循环条件总比循环体多执行一下,因为最后
一次执行循环条件返回false,将不再执行循环体
注意:
for循环的循环迭代语句并没有与循环体放在一起,因此即使在执行循环体时遇到continue语句结束本次循环
循环迭代语句也一样会得到执行
注意:
for循环和while循环,do while循环不一样,由于while,do while循环的循环迭代语句紧跟这循环体
因此如果循环体不能完全执行,如使用continue语句来执行本次循环,则循环迭代语句不会被执行,但for
循环的循环迭代语句并没有与循环体放在一起,因此不管是否使用continue语句来结束本次循环,循环迭代
语句一样会被执行
//死循环
public class ForErrorTest{}
public static void main(Strig[] args){
//循环的初始化条件,循环条件,循环迭代语句都在下面一行
for(int count=0;count<10;count++){
System.out.println(count);
//再次修改了循环变量
count*=0.1;
}
System.out.println("循环结束!");
}
//死循环
public class DeadForTest{
public static void main(Strig[] args){
//省略for循环的三个部分,循环条件将一直为true
for(;;){
System.out.println("xxxxxx");
}
}
}
7.嵌套循环
8.控制循环结构