java的条件结构以及流程控制

一、条件结构

1.单独的 if

顾名思义,if 的中文意思是"如果" 表示判断;即有选择、就会有判断条件,所以由 if 组成的语句块称为条件结构。

  使用格式:if(表达式){语句;}

执行原理:先判断条件表达式是否为真(即是否成立),表达式为真则执行花括号{ }之间的语句,否则不执行。

细节注意:不管表达式如何复杂,其结果必须为boolean类型的值,即要么是true、要么是false,而不能是其他值

2.if---else结构

格式:if(表达式){语句;}else{语句;}------------------>如果.......否则就.......

用于涉及两个分支的选择问题

执行原理:先判断表达式是否为true、为true则执行 if 的语句体,否则就执行else的语句体。

推广:多重的else if结构

     格式:if(表达式1)

{

语句1;

}

else if(表达式2)

{

语句2;

}

else if(表达式3)

{

语句3;

}

else

语句4;



执行原理:首先计算表达式1 的结果看是true 还是 false 
    如果是true 就执行 语句1
    如果是false 向下到 else if中 来判断表达式2 的结果是true 还是false
    如果是true 就执行 语句2 ......
  注意: 最后一个 else 可以省略 但是不建议省略 可以对范围外的错误值进行提示 补充

应用举例:编写一个程序判断某班的数学成绩的等级  >=90---->A    >=80----->B   >=70----->C   >=60----->E

class Demo01
{
public static void main(String[] args)//程序运行的入口
{
int math=60;//定义整型变量
if(math>=90)//条件判断
System.out.println("A");
else if(math>=80)
System.out.println("B");
else if(math>=70)
System.out.println("C");
else if(math>=60)
System.out.println("D");
else 
System.out.println("E");
}
}

3.条件结构中的多分支选择语句:switch-----case

格式: switch(表达式)

{
case 值1:
语句体1;
break;
case 值2:
语句体2
break;
......
default:
break; //可以不写
}

举一个简单的例子:由键盘输入月份,判断其对应的季节

java.util.Scanner;

class Demo02
{
public static void main(String[] args)//程序运行的入口
{

Scanner sc=new Scanner(System.in);

System.out.println("请输入月份");

int month=sc.nextInt();
switch(month)//多分支选择
{
case 3:
case 4:
case 5:System.out.println("春季");break;
case 6:
case 7:
case 8:System.out.println("夏季");break;
case 9:
case 10:
case 11:System.out.println("秋季");break;
case 12:
case 1:
case 2:System.out.println("冬季");break;
default:
System.out.println("无效月份");break;
}
}
}


执行流程:
先计算表达式的值
然后和case后面的常量匹配,如果相同,就执行对应的语句 否则执行default控制的语句


switch(表达式)
java1.6(包括) 之前 类型 byte short int char 枚举
java1.7之后 多了一个 String类型
    思考问题:
switch分支在什么情况下会结束?

switch分支 有两种情况结束分支
1.遇到break;就结束 
2.遇到switch的 } 花括号 结束
注意事项:
a.case后面只能是常量,不能是变量,而且多个case后面的值不能出现相同的
b.default可以省略 但是不建议省略 因为它的作用是对不正确的情况给出提示 补充
c.break可以省略码?
最后一个可以省略,其他的最好不要省略
会出现一个现象较 case穿透(多个答案对应同一个结果)
 switch case 小情况

1.switch default:可以写在 case前面 先走case 最后才是default
default在case前面 没有break;的时候 执行default之后 向下继续执行 将不再判断case值是否匹配 
直到碰到break; 或者}结束
if - else switch - case 区别
(1
).适用场景
要判断区间范围 用 if else   --> 0<x<18
要判断单个的定值 用 switch-case (值不多的时候 switch比if快 效率略高)
(2
).语句的表达式值类型不同
if(表达式) --> boolean  true false
switch(表达式) --> byte short int char 枚举 Strin
    

二、循环结构即流程控制      

循环解决的问题:重复的行为 反复出现 就可以使用循环 来处理

在java语言中共有三大循环:while循环、do-while循环和for循环,都能解决重复的行为,但它们又各有不同。

1.while循环
语句格式:
初始化语句;
while(判断条件语句)

{
循环体语句;
控制条件语句;//不一定要写 但不写就死循环 没有跳出循环的可能性了
}

执行流程:
1.执行初始化语句
2.执行判断条件语句 看其返回值是true 还是false
如果是 true: 就继续执行 循环体中的内容
如果是 false: 就结束循环
3.执行循环体语句
4.执行控制条件语句
5.回到2继续

.2.do-while循环
语句格式:
初始化语句;
do{
循环体语句;
控制条件语句;


}while(判断条件语句);


执行流程:
(1).执行初始化语句
(2).执行循环体语句
(3).执行控制条件语句
(4).执行判断条件语句
如果是true 就继续循环执行
如果是false 就结束循环
(5)回到2继

3.for循环
语句格式:
for(
表达式1;表达式2;表达式3)
{
语句4;
}
执行流程:
(1).初始化语句
(2).判断条件语句
true --> 循环体
false -->结束循环
(3).执行循环体
(4).控制条件语句
(5).回到2继续
//i++ --> i = i+1 是在内存中申请了另一片区域 存了一下i+1的值 然后赋给i
//++i --> 是直接给i这个变量赋值 效率高一点


注意事项:
.判断条件语句 无论简单还是复杂 结果必须是boolean
.循环体语句如果是一条语句,花括号可以省略,如果是多条语句,就不可以省略 建议永远不要省略


for,while和do-while三种循环的异同点

.do-while循环至少执行一次循环体
.for循环和while循环 初始化变量的作用域不同 
for循环只在循环体内部可以使用
while在方法体中可以继续使用
避免死循环:
while(true){

}
for(;;){

}

举一个简单的例子:分别用三种循环来实现;

编写程序使用循环结构在控制台打印出10次 Hello word!

使用while循环

class Demo03
{
public static void main(String[] args)//程序运行的入口
{
int i=0;//定义整型变量i
while(i<10)//循环10次
{
System.out.println("Hello word!");//输出"Hello word!"
i++;//循环次数自加
}
}
}


使用do while循环:

class Demo04
{
public static void main(String[] args)//程序运行的入口
{
int i=0;//定义整型变量i
do
{
System.out.println("Hello word!");//打印"Hello word!"
i++;//循环次数自加
}while(i<10);//循环
}
}


使用for循环

class Demo05
{
public static void main(String[] args)//程序运行的入口
{
int i=0;//定义整型变量i
for(;i<10;i++)//循环10次
{
System.out.println("Hello word!");//打印出"Hello word!"
}
}
}











































猜你喜欢

转载自blog.csdn.net/RYJ359/article/details/75095021