Java学习day3 流程控制语句

流程控制语句

顺序结构语句

  • jvm调用main方法:代码从上而下依次加载(源顺序)

选择结构语句

  • if语句
  • switch语句

循环结构语句

  • while语句
  • do...while语句
  • for循环语句

选择结构

if语句

三种格式

/*
针对单一条件进行判断
执行流程:
			首先判断表达式是否成立,
			如果成立,则执行语句;
			否则不成立,不会执行!
*/
if(表达式){

    语句;
}
/*
	执行流程:
		首先判断表达式是否成立,
		如果成立,执行语句1;
		否则,执行语句2
*/
if(表达式){

    语句1;
}else{

    语句2;
}
/*
场景:针对多个情况进行判断
		流程:
			首先,判断表达式1是否成立,成立,执行语句1
			否则,判断表达式2是否成立,成立,执行语句2
			否则,判断表达式3是否成立,成立,执行语句3
			
			....
			如果上述都没有匹配的结果:执行else的语句;
*/
if(表达式1){
    语句1;
}else if(表达式2){
    语句2;
}else if(表达式3){
    语句3;


......
}else{
    语句n+1;

}

注意事项:

  1. if的后面不能有;if(表达式);{}  错误语法 ;有左大括号的地方不能有分号;有分号的地方不能有左大括号    
  2. 如果使用if格式1,里面的语句是条语句,{}是可以省略的!,不建议省略!

switch语句

 switch语句格式:

/*
执行流程首先计算出表达式的值其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程
中,遇到break就会结束。最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

*/
switch(表达式) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}

 表达式的数据类型:

  • jdk5之前:最基本的类型:int,byte,char
  • jdk5以后:可以跟枚举类(enum)
  • jdk7以后:String类型

注意事项:

  • case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
  • default可以省略吗?可以省略。一般不建议。除非判断的值是固定的。(单选题)
  • break可以省略吗?可以省略,一般不建议。否则结果可能不是你想要的
  • default的位置一定要在最后吗?可以出现在switch语句任意位置。
  • switch语句的结束条件: 遇到break 或者 执行到程序的末尾

case的穿透效果

/*
在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。
*/
public static void main(String[] args) {
int i = 5;
switch (i){
case 0:
System.out.println("执行case0");
break;
case 5:
System.out.println("执行case5");
case 10:
System.out.println("执行case10");
default:
System.out.println("执行default");
}
}

执行结果

将default放到中间的穿透效果


class Test{
	
	public static void main(String[] args) {
int i = 5;
switch (i){
case 0:
System.out.println("执行case0");
break;
case 5:
System.out.println("执行case5");
default:
System.out.println("执行default");
case 10:
System.out.println("执行case10");
}
}
}

执行结果

结论:当case的值表达式的值匹配时没有遇到break就会发生穿透效果,这种情况只需看下方还有哪些执行语句即可 

if语句和switch语句的区别

if语句使用场景:

  • 针对结果是boolean类型的判断
  • 针对一个范围的判断

switch语句使用场景:

  • 针对几个常量值的判断

循环语句

for循环

语句格式

for(初始化表达式①; 布尔表达式②; 步进表达式④){
循环体③
}

执行流程

  • 执行顺序:①②③④>②③④>②③④…②不满足为止。
  • ①负责完成循环变量初始化
  • ②负责判断是否满足循环条件,不满足则跳出循环
  • ③具体执行的语句
  • ④循环后,循环条件所涉及变量的变化情况

注意事项:

        判断条件语句的结果是一个boolean类型循环体语句如果是一条语句,大括号可以省略; 如果是多条语句,大括号不能省略。建议永远不要省略。 一般来说:有左大括号就没有分号,有分号就没有左大括号

for循环死循环格式:

for(;;){
    System.out.print("死循环");
}

 

while循环

语句格式

/*
while循环语句格式:
基本格式
*/
while(判断条件语句) {
循环体语句;
}


/*
扩展格式
*/
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}

执行流程: 

while循环死循环:

while(true){

    System.out.println("死循环");
}

 

for循环和while循环的区别

for循环语句和while循环语句可以等价转换,但还是有些小区别的使用区别:

  • 控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
  • 当明确循环次数建议使用for循环,不明确建议使用while

do...while循环

/*
do…while循环语句格式:
基本格式
*/
do {
循环体语句;
}while((判断条件语句);
/*
扩展格式
*/
初始化语句;
do {
循环体语句;
控制条件语句;
} while((判断条件语句);

执行流程:

do...while循环的特点:

         无条件执行一次循环体,即使我们将循环条件直接写成false,也依然会循环一次。这样的循环具有一定的风险性。

跳出语句

break

使用场景:终止switch或者循环

  • 在选择结构switch语句中
  • 在循环语句中
  • 离开使用场景的存在是没有意义的

break的作用:

  • 跳出单层循环
  • 跳出多层循环
  • 带标签的跳出  格式:标签名: 循环语句

例如:带标签的跳出

跳出外层:

class TestDemo{

    public static void main(String[] args){
        //定义外层标签wc
       wc:for(int i = 0 ; i < 4 ; i++){
            //定义内层标签nc
            nc:for(int y = 0 ; y < 4 ; y++){
                    if(i==1){
                        //跳出外层
                         break wc;
                    }
					System.out.print("*");
                }
            }
    }
}

运行结果:跳出外层结束循环

跳出内层:

class TestDemo{

    public static void main(String[] args){
        //定义外层标签wc
       wc:for(int i = 0 ; i < 2 ; i++){
            //定义内层标签nc
            nc:for(int y = 0 ; y < 2 ; y++){
                    if(i==1){
                        //跳出内层
                         break nc;
                    }
					System.out.print("*");
                }
                System.out.println();
            }
    }
}

运行结果:跳过内层直接进入外层下一次循环

continue

使用场景:结束本次循环,继续下一次的循环

public static void main(String[] args) {
for (int i = 1; i <= 10; i++) {
//需求:不打印第三次HelloWorld
if(i == 3){
continue;
}
System.out.println("HelloWorld"+i);
}
}

运行结果:

return

Return关键字不是为了跳转出循环体,更常用的功能是结束一个方法,也就是退出一个方法。跳转到上层调用的方法。结束循环其实是结束了main方法

for(int x=0; x<10; x++) {
    if(x == 3) {
        System.out.println("退出");
        //使用return结束main方法
        return;
    }
    System.out.println(x);
}
System.out.println("over");

运行结果:没有输出”over“

 

Systm.exit(0)

直接结束jvm可以达到相同效果

class TestDemo{
	public static void main(String[] args) {
		for(int x=0; x<10; x++) {
			if(x == 3) {
				System.out.println("退出");
				System.exit(0);
				//return;
			}
			System.out.println(x);
		}
		System.out.println("over");
	}
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值