任何程序都可以总结出三种执行语句:
顺序结构:从程序开始,到程序结束
分支结构:在顺序结构基础上,根据条件进行选择执行方向。
循环结构:在顺序结构基础上,根据条件进行多次执行相同的或相似的代码
分支结构:根据条件的成立与否,选择执行方向。
(一)if分支结构:
语句1;
if(条件表达式){
代码块//条件成立时,执行的逻辑
}
语句2;
执行逻辑:执行完语句1后,碰到if,一定会执行
条件表达式,结果为true,就执行代码块,
然后再执行语句2。
结果为false,就跳过代码块,执行语句2
if(条件表达式){
代码块1// 条件成立时执行此代码块
}else{
代码块2// 条件不成立时执行此代码块
}
执行逻辑:当程序执行到if时,一定会执行条件表达式进行判断
结果为true,就执行代码块1.
结果为false,跳过代码块1,执行代码块2
if语句的练习:
public class TestDemo02{
public static void main(String[]args){
/*
int a = 4,b = 6,
使用分支结构找到最大值max
使用分支结构找到最小值min
*/
int a = 4;
int b = 6;
int c = 10;
int d = 20;
int max = -1;
int min = -1;if(a>b){
max = a;
min = b;
}if(a<b){
max = b;
min = a;
}
System.out.println("max:"+max);
System.out.println("min:"+min);/*
int c = 10;int d = 20;
使用if-else分支结构,找出最大值max
最小值min
*/if(c>d){
max = c;
min = d;
}else{
min = c;
max = d;
}
System.out.println("max:"+max);
System.out.println("min"+min);
}
}
if(条件1){
代码块1;
}else if(条件2){
代码块2
}else if(条件3){
代码块3
}else{
代码块4
}
执行逻辑:程序执行到if时,一定会执行条件1,进行判断
结果为true,执行代码块1。
结果为false,执行条件2,进行判断
结果为true,执行代码块2.
结果为false,执行条件3,进行判断
public class TestDemo03{
public static void main(String []args){
int a = 1649;
int b = 906;
int c = 5631;
int min = -1;
int mid = -1;
int max = -1;
//max
if(a>b){
if(a>c){
max = a;
}else{
max = c;
}
}else{
if(c<b){
max = b;
}else{
max = c;
}
}
//min
if(a<b){
if(a<c){
min = a;
}else{
min = c;
}
}else{
if(b>c){
min = c;
}else{
min = b;
}
}
//mid
if(a>b){
if(b>c){
mid = b;
}else{
if(c>a){
mid = c;
}else{
mid = a;
}
}
}else{
if(a<c){
mid = a;
}else{
if(c<b){
mid = c;
}else{
mid = b;
}
}
}
System.out.println("max:"+max);
System.out.println("min:"+min);
System.out.println("mid:"+mid);
}
}
当if语句中含有else部分时,一定会执行其中一条分支,
没有else时{}部分时,有可能一条分支都不执行。
分支结构:
(一)if语句
当if语句中含有else部分时,一定会执行其中一条分支,
没有else时{}部分时,有可能一条分支都不执行。
(二)switch-case语句
格式switch(整数表达式){
case value1:代码块;[break];
case value2:代码块;[break];
。。。。。。。
[default:代码块n;]-----[]表
整数表达式:即能获得一个整数的表达式。示可有可无
}
但是jdk1.7以后,支持字符串表达式。
case后的值与小括号内的结果类型要相同
break:打断,毁掉,跳出,结束的含义。
执行逻辑:当程序遇到switch关键字时计算表达式得值,
然后匹配case后的值,然后,执行对应分支逻辑
如果次分支有break,就结束分支结构,如果次分支没有break,
就继续执行下一条分支逻辑,
直到遇到break或default或全部执行完后续的所有分支逻辑
if语句和switch-case的区别:
if执行的是一个条件表达式,switch-case执行的是整数或字符串表达式。
public class TestDemo01{
public static void main(String[]args){
/*
练习1.定义一个变量,用来存储月份
使用switch语句输出此月份在哪个季度。
此月份是第一季度第二季度第三季度第四季度
*/
int mouth = 10;
switch((mouth-1)/3){
case 0:
System.out.println("第一季度");
break;
case 1:
System.out.println("第二季度");
break;
case 2:
System.out.println("第三季度");
break;
case 3:
System.out.println("第四季度");
break;
}
//练习2
int person = 124;
switch (person%3){
case 0:
System.out.println("操场没有人");
break;
case 1:
System.out.println("操场还有1人");
break;
case 2:
System.out.println("操场还有2人");
break;
}//练习3
int score = 49;
switch (score/10){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("小明成绩为"+score+"等级为E");
break;
case 6:
System.out.println("小明成绩为"+score+"等级为D");
break;
case 7:
System.out.println("小明成绩为"+score+"等级为C");
break;
case 8:
System.out.println("小明成绩为"+score+"等级为B");
break;
case 9:
System.out.println("小明成绩为"+score+"等级为A");
break;
case 10:
System.out.println("小明成绩为"+score+"等级为S");
break;
}
}
}