Java执行语句

本文详细介绍了编程中的顺序语句、分支结构(if、if...else、多重if、嵌套if和switch)、以及循环语句(for、while、do-while),包括它们的语法、理解要点和应用场景。此外,还讨论了特殊的流程控制语句,如break、continue和return的用法。
摘要由CSDN通过智能技术生成

一、顺序语句

方法里的代码从上往下运行

二、分支语句

(一)if分支

1.简单if分支

简单if分支的语句结构为:

if(表达式){
    ...代码块...
}

理解:

如果表达式为true,则执行if内的代码块;

如果表达式为false,则执行if以外的代码块

2.复杂if分支

复杂if分支语句主要是针对复杂条件的判断,如:

//案例二:同学Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;
//或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他。
Scanner scan = new Scanner(System.in);
        
System.out.println("请输入java成绩:");
Double javaScore= scan.nextDouble();
System.out.println("请输入音乐成绩):");
Double musicScore = scan.nextDouble();
        
if((javaScore>98&&musicScore>80)||(javaScore==100&&musicScore>70)){
        System.out.println("奖励");
}

总结:

  1. if分支表达式的结果是boolean类型,只能为true或者false

  2. if分支可以判断区间

  3. if分支可以判断复杂条件

3.if...else分支

if...else分支的语句结构为:

if(表达式){
    ...代码块1...
}else{
    ...代码块2...
}

理解:

如果表达式为true,则执行if内的代码块;

如果表达式为false,则执行else内的代码块

总结:

if...else用于二选一的情况

4.多重if分支
if(表达式1){
    ...代码块1...
}else if(表达式2){
    ...代码块2...
}else if(表达式n){
    ...代码块n...
}else{
    ...else代码块...
}

理解:

从上往下判断表达式,哪个表达式先成立(true),就执行对应的代码块;如果都不成立,就执行else代码块

总结:

  1. 表达式都是boolean类型

  2. 多重if分支在多选一的时候使用

  3. 多重if分支从上往下执行,满足某一表达式为true时,执行该处的表达式后跳出分支

  4. else部分根据需求可写可不写

5.嵌套if

if语句中嵌套if语句,例如:

//某学校召开100米跑,其中跑步时长7-12的进入决赛,并划分男女组
Scanner scan = new Scanner(System.in);
System.out.println("请输入比赛成绩");
Double s = scan.nextDouble();
        
if(s>7&&s<=12){
    System.out.println("请输入性别:");
    String sex = scan.next();
            
    if(sex.equals("男")){
        System.out.println("请进入男子组");
        }else if(sex.equals("女")){
            System.out.println("请进入女子组");
        }else{
            System.out.println("错误");
        }
    }else if((s>0&&s<=7)||s>12){
        System.out.println("重在参与");
    }else if(s<0){
        System.out.println("成绩异常");
    }

总结:

  1. if支持无限层嵌套

  2. 为了代码的可读性,嵌套程度最好不要超过三层

(二)switch分支

switch分支语句结构:

switch(表达式){
    case 值1:
        ...代码块1...
    break;
    case 值2:
        ...代码块2...
    break;
        ...
    case 值n:
        ...代码块n...
    break;
    default:
        ...default代码块...
    break;
}

理解:

表达式分别与值1、值2、...、值n比较,哪个相同就执行相应的代码块。

总结:

  1. switch主要用于判断单个值是否相同

  2. break表示执行代码块后,跳出当前switch分支

  3. default代码块相当于if分支中的else,按照需求来看写还是不写

(三)if vs switch

ifVSswitch
只支持boolean类型的数据表达式支持byte、short、int、char、枚举、String类型的数据
if可以判断区间和复杂条件应用场景判断单个值是否相同

三、循环语句

(一)for循环

for语句结构:

for(表达式1;表达式2;表达式3){
    ...代码块/循环体...
}

理解:

表达式1 --> 初始化语句

表达式2 --> 判断条件

表达式1 --> 更新变量

执行步骤:

  1. 初始化变量

  2. 判断条件(结果是boolean类型)

    true -- 就执行循环语句,更新变量,重复第二个步骤

    false -- 跳出整个循环语句

总结:

  1. 初始化变量不一定从0开始,需要根据需求变换

  2. 更新变量不一定++,设置为--,+=等都是可以的,需要更根据要求灵活变换

  3. 在循环中声明的变量其作用域只能在循环中使用(即定义在循环里的变量,在循环外无法使用)

  4. 更新变量中++i和i++没有区别,都是+1的意思

(二)for循环嵌套

for循环中嵌套for循环,在for循环嵌套中,外层循环控制行,内层循环控制列。

关于for循环嵌套有几个经典的例子,我会把它放在最后,大家可以适当理解练习一下。

(三)while循环

while语法结构:

while(表达式){
    ...代码块/循环体...
}

理解:

表达式的结果是boolean类型,当结果为true时,执行循环体;结果为false时,跳出循环。

总结:

while循环可以实现for循环的功能

(四)do-while循环

do-while语法结构:

do{
    ...代码块/循环体...
}while(表达式)

理解:

先执行一遍代码块,再判断表达式。表达式的结果是boolean类型,当结果为true时,执行循环体;结果为false时,跳出循环。

(五)三种循环的区别

区别forwhiledo-while
语法结构for(初始化变量;判断条件;更新变量){}while(判断条件){}do{}while(判断条件)
执行顺序先判断,再执行先判断,再执行先执行一次,再判断执行
应用场景循环次数确定时,使用for循环循环次数不确定时,并且先判断再执行,使用while循环循环次数不确定时,并且先执行一遍再判断,使用do-while循环

四、特殊的流程控制语句

语句理解
breakbreak作用于循环中,表示跳出当前循环。
continuecontinue作用于循环中,表示跳过当前循环剩余部分,进入下一次循环。
returnreturn作用在方法中,表示结束当前方法。
labellabel 给循环做标记(给循环取名字)。可以在复杂的循环中,由内层循环结束指定循环。

break与continue的区别如图示:


补充:for循环嵌套例子

打印如下图形:

案例一:

****	i=0     j:4
****	i=1     j:4
****	i=2     j:4
for(int i = 0;i<3;i++){//控制有3行
	for(int j = 0;j<4;j++){//控制有四列
		System.out.print("*");//打印*
		}
	System.out.println();//换行
}

注意:此处打印使用print而不是println。因为println自带换行功能,因此使用print保证每一行的*不会自动换行。

案例二:

*		i=0       j:1
**		i=1	  j:2
***		i=2	  j:3
****	        i=3	  j:4
*****	        i=4	  j:5
注意:此处的j以及之后的k,后面跟的都是他们在第i行的个数。
for(int i = 0;i<5;i++){
	for(int j = 0;j<=i;j++){
		System.out.print("*");
	}
	System.out.println();
}

案例三:

    *    i=0   k:4   j:1
   **    i=1   k:3   j:2
  ***    i=2   k:2   j:3
 ****    i=3   k:1   j:4
*****    i=4   k:0   j:5
for(int i = 0;i<5;i++){
	for(int k = 0;k<4-i;k++){//控制每行空格的个数
		System.out.print(" ");
	}
	for(int j = 0;j<=i;j++){//控制每行*的个数
		System.out.print("*");
	}
	System.out.println();
}

案例四:

*****		i=0    j:5
**** 		i=1    j:4
***  		i=2    j:3
**   		i=3    j:2
*    		i=4    j:1
for(int i = 0;i<5;i++){
	for(int j = 0;j<5-i;j++){
		System.out.print("*");
	}
	System.out.println();
}

案例五:

*****		i=0     k:0      j:5
 ****		i=1     k:1      j:4
  ***		i=2     k:2      j:3
   **		i=3     k:3      j:2
    *		i=4     k:4      j:1
for(int i = 0;i<5;i++){
	for(int k = 0;k<i;k++){
		System.out.print(" ");
	}
	for(int j = 0;j<5-i;j++){
		System.out.print("*");
	}
	System.out.println();
}

案例六:

   *		i=0   k:3   j:1
  ***   	i=1   k:2   j:3
 *****  	i=2   k:1   j:5
******* 	i=3   k:0   j:7
for(int i = 0;i<4;i++){
	for(int k = 0;k<3-i;k++){
		System.out.print(" ");
	}
	for(int j = 0;j<i*2+1;j++){
		System.out.print("*");
	}
	System.out.println();
}

案例七:

   *		i=0   k:3
  * *		i=1   k:2
 *   *  	i=2   k:1
******* 	i=3   k:0
for(int i = 0;i<4;i++){
	for(int k = 0;k<3-i;k++){
		System.out.print(" ");
	}
	for(int j = 0;j<i*2+1;j++){
		//第一行||最后一行||第一列||最后一列
		if(i==0||i==3||j==0||j==i*2){
			System.out.print("*");
		}else{
			System.out.print(" ");
		}
	}
	System.out.println();
}		

案例八:

*******		i=0   k:0     j:7
 ***** 		i=1   k:1  	  j:5
  ***  		i=2   k:2  	  j:3
   *   		i=3   k:3  	  j:1
for(int i = 0;i<4;i++){
		for(int k = 0;k<i;k++){
			System.out.print(" ");
		}
		for(int j = 0;j<7-i*2;j++){
			System.out.print("*");
		}
		System.out.println();
	}

案例九:

*******		i=0   k:0 
 *   *		i=1   k:1    
  * *		i=2   k:2     
   *		i=3   k:3    
for(int i = 0;i<4;i++){
		for(int k = 0;k<i;k++){
			System.out.print(" ");
		}
		for(int j = 0;j<7-i*2;j++){
			//第一行||最后一行||第一列||最后一列
			if(i==0||i==3||j==0||j==7-i*2-1){
				System.out.print("*");
			}else{
				System.out.print(" ");
			}
		}
		System.out.println();
	}	
  • 38
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值