Java基础语法之语句

目录

1. 语句的作用

2. 语句的分类

2.1 顺序结构语句

2.1.1 概述

2.1.2 执行流程

2.2 选择结构语句

2.2.1 概述

2.2.2 if语句的三种格式

2.2.2 switch语句

2.2.3 if语句和switch语句的区别

2.3 循环结构语句

2.3.1 概述

2.3.2 循环语句的组成

2.3.3 for循环语句

2.3.4 while循环语句

2.3.5 do…while循环语句

2.3.6 三种循环语句的区别及注意事项

2.3.7 循环的嵌套使用

2.4 跳转控制语句

2.4.1 break中断

2.4.2 continue继续

2.4.3 return返回


1. 语句的作用

可以控制程序的执行流程

2. 语句的分类

  • 顺序结构语句
  • 选择结构语句
  • 循环结构语句

2.1 顺序结构语句

2.1.1 概述

是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的

2.1.2 执行流程

写在前面的先执行,写在后面的后执行

顺序结构图:

2.2 选择结构语句

2.2.1 概述

也被称为分支结构。

选择结构有特定的语法规则,代码要执行具体的逻辑运算(结果为true或false)进行判断,根据结果选择执行相应的代码。

Java语言提供了两种选择结构的语句:if语句 switch语句

2.2.2 if语句的三种格式

格式1

if (关系表达式) {
    语句体;
}

执行流程

  1. 首先判断关系表达式,看结果值true还是false;
  2. 如果结果为true,就执行语句体;
  3. 如果结果为false,就不执行语句体。

格式1流程图

案例1:

//导包
import java.util.Scanner;

class IfDemo1 {
    public static void main(String[] args) {
		//创建键盘录入对象
        Scanner sc = new Scanner(System.in);
		//控制台输出提示语句
		System.out.println("请输入一个数");
		//通过对象sc调用nextInt()得到int类型数据
		int x = sc.nextInt();
		//判断输入的数是否等于10
        if (x == 10) {
        System.out.println("x等于10");
        }
		//判断输入的数是否等于20
        if (x == 20) {
        System.out.println("x等于20");
        }
		//输出结束语句
        System.out.println("OVER");
    }
}

注意事项

  1. 关系表达式无论简单还是复杂,结果必须是boolean类型。
  2. if语句控制的语句体如果是一条语句,大括号可以省略;如果是多条语句,就不能省略。建议永远不要省略。
  3. 一般来说:有左大括号就没有分号,有分号就没有左大括号。

格式2:

if(关系表达式) {
    语句体1;
}else {
    语句体2;
}

执行流程

  1. 首先判断关系表达式是true还是false;
  2. 如果是true,则执行语句体1;
  3. 如果是false,则执行语句体2。

格式2流程图

案例2:键盘录入两个数,判断其是否相等

//导包
import java.util.Scanner;

class IfDemo2 {
	public static void main(String[] args) {
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入第一个数:");
		int a = sc.nextInt();
		
		System.out.println("请输入第二个数:");
		int b = sc.nextInt();
		
		//判断两个数是否相等
		if (a == b) {
			System.out.println("两个数相等");
		}else {
			System.out.println("两个数不相等");
		}
		System.out.println("OVER");
	}
}

if语句和三元运算的相互转换:

三元运算符实现的都可以采用if语句实现,反之不成立

当if语句体为输出语句时不能用三元运算符实现。因为三元运算符是一个运算符,运算符操作完毕应该有一个结果而不是输出

案例3:获取两个数据中的最大值

//导包
import java.util.Scanner;

class IfDemo3 {
	public static void main(String[] args) {
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入第一个数:");
		int a = sc.nextInt();
		
		System.out.println("请输入第二个数:");
		int b = sc.nextInt();
		//if语句,“输出”较大值
		if (a > b) {
			System.out.println("较大的值是:"+a);
		}else {
			System.out.println("较大的值是:"+b);
		}
		
	}
}
//导包
import java.util.Scanner;

class IfDemo3 {
	public static void main(String[] args) {
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入第一个数:");
		int a = sc.nextInt();
		
		System.out.println("请输入第二个数:");
		int b = sc.nextInt();
		//不能在if语句里定义max
		int max;
		//if语句赋值操作
		if (a > b) {
			max = a;
		}else {
			max = b;
		}
		System.out.println("Max="+max);
	}
}

三元改进

//导包
import java.util.Scanner;

class IfDemo3 {
	public static void main(String[] args) {
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入第一个数:");
		int a = sc.nextInt();
		
		System.out.println("请输入第二个数:");
		int b = sc.nextInt();
		
		//三元改进
		int max = (a > b)?a:b;
		System.out.println("Max="+max);
	}
}

格式3:

if(关系表达式1) {
    语句体1;
}else if(关系表达式2) {
    语句体2;
}else if(关系表达式3) {

    语句体3;
}
……
else {
    语句体n+1;
}

执行流程

  1. 首先计算关系表达式1的结果是true还是false;
  2. 如果是true,则执行语句体1;
  3. 如果是false,就继续判断表达式2,看结果是true还是false;
  4. 如果是true,就执行语句体2;
  5. 否则执行关系表达式3,看结果是true还是false
  6. ……
  7. 如果没有任何一个关系表达式是true,就执行语句体n+1.

格式3流程图:

案例4:通过把学生考试成绩分等级来引出if语句的第三种格式   

 90-100    优秀   ;  80-90    好    ; 70-80    良    ; 60-70    及格   ;  60一下    不及格(注意正确数据、边界数据、错误数据)

//导包
import java.util.Scanner;

class IfDemo4 {
	public static void main(String[] args) {
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入学生的成绩(0~100):");
		int score = sc.nextInt();
		//if语句
		if(score >= 90 && score <= 100) {
			System.out.println("优秀");
		}else if(score >= 80 && score < 90) {
			System.out.println("良");
		}else if(score >= 70 && score < 80) {
			System.out.println("好");
		}else if(score >= 60 && score < 70) {
			System.out.println("及格");
		}else if(score >=0 && score < 60) {
			System.out.println("不及格");
		}else {
			System.out.println("你输入的成绩有误");
		}
	}
}

2.2.2 switch语句

switch语句格式:

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

格式解释:

switch表示这是switch语句

表达式的取值:byte,short,int,char

JDK5以后可以是枚举,JDK7以后可以是String

case后面跟的是要和表达式进行比较的值

语句体部分可以是一条或多条语句

break表示中断,结束的意思,可以结束switch语句

default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。

执行流程:

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

switch语句流程图:

案例:根据键盘录入的数值1,2,3,…7输出对应的星期一,星期二,星期三…星期日。

//导包
import java.util.Scanner;

class SwitchDemo1 {
	public static void main(String[] args) {
		//创建录入对象
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个数(1~7):");
		int x = sc.nextInt();
		//switch语句
		switch(x) {
			case 1:
			System.out.println("星期一");
			break;
			case 2:
			System.out.println("星期二");
			break;
			case 3:
			System.out.println("星期三");
			break;
			case 4:
			System.out.println("星期四");
			break;
			case 5:
			System.out.println("星期五");
			break;
			case 6:
			System.out.println("星期六");
			break;
			case 7:
			System.out.println("星期日");
			break;
			default :
			System.out.println("你输入的数字有误");
			break;
		}
	}
}

注意事项

  1. case后面的值只能是常量,并且case的值不能出现相同的;
  2. default可以省略(case就能将值固定的情况),但是不建议,因为它的作用是对不正确的情况给出提示;
  3. break可以省略(程序末尾的break可以省略),但不建议,可能出现case穿透;
  4. default可以出现在任意位置,建议在最后;
  5. switch语句的结束条件:遇到break或者 执行到程序的末尾

2.2.3 if语句和switch语句的区别

if语句使用场景:

  1. 针对结果是boolean类型的判断
  2. 针对一个范围的判断
  3. 针对几个常量值的判断

switch语句使用场景:

  1. 针对几个常量值的判断

2.3 循环结构语句

2.3.1 概述

循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句。

当反复执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。

循环语句的三种类型:for循环语句;while循环语句;do...while循环语句

2.3.2 循环语句的组成

1. 初始化语句

  • 一条或者多条语句,这些语句完成一些初始化操作。

2. 判断条件语句

  • 这是一个boolean 表达式,这个表达式能决定是否执行循环体。

3. 循环体语句

  • 这个部分是循环体语句,也就是我们要多次做的事情。

4. 控制条件语句

  • 这个部分在一次循环体结束后,下一次循环判断条件执行前执行。通过用于控制循环条件中的变量,使得循环在合适的时候结束。

2.3.3 for循环语句

for循环格式:

for(初始化语句;判断条件语句;控制条件语句) {
    循环体语句;
}

执行流程:

  1. 首先执行初始化语句;
  2. 然后执行判断条件语句,看其结果是true还是false:
    1. 如果为false,循环结束;
    2. 如果为true,执行循环语句体;
  3. 接着执行控制条件语句;
  4. 回到2继续,直到条件语句结果为false,循环结束。

for循环流程图:

注意事项:

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

案例:

//输出1——10
class ForDemo2 {
	public static void main(String[] args) {
		for(int x = 1;x <= 10;x++) {
		System.out.println(x);
		}
	}
}
//求1——10之间数的和
class ForDemo3 {
	public static void main(String[] args) {
		int sum = 0;
		for(int i = 1;i <=10;i++) {
			sum += i;
		}
		System.out.println(sum);
	}
}
//求1——10之间偶数的和
//错误代码
class ForDemo4 {
	public static void main(String[] args) {
		int sum = 0;
                //条件语句为false,循环直接结束输出sum=0
		for(int x = 1;(x <= 10 )&& (x % 2 == 0);x++ ) {
			sum += x;
		}
		System.out.println("sum ="+sum);//输出结果为0
	}
}


//正确代码
class ForDemo4 {
	public static void main(String[] args) {
		int sum = 0;
		for(int x = 1;x <= 10;x++) {
                        //注意=和==的区别
			if (x%2 == 0){
				sum += x;
			}
		}
		System.out.println("sum ="+sum);//输出结果为30
	}
}
//求5的阶乘
class ForDemo5 {
	public static void main(String[] args) {
		int n = 1;
		for(int i = 1;i <=5;i++) {
			n *= i; 
		}
		System.out.println(n);
	}
}

2.3.4 while循环语句

基本格式

while(判断条件语句) {
    循环体语句;
}

扩展格式:

初始化语句;
while(条件判断语句){
    循环体语句;
    控制条件语句;
}

while循环流程图:

案例:

//用while求1——100之和
class WhileDemo1 {
	public static void main(String[] args) {
		int x = 1;
		int sum = 0;
		while(x <= 100){
			sum +=x;
			x++;
		}
		System.out.println("sum = "+ sum);
	}
}

for循环和while循环的区别

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

使用区别

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

场景区别

for循环适合针对一个范围判断进行操作 while循环适合判断次数不明确操作

2.3.5 do…while循环语句

基本格式:

do {
    循环体语句;
}while(判断条件语句);

扩展格式:

初始化语句;
do {
    循环体语句;
    控制条件语句;
}while(判断条件语句);

执行流程图:

2.3.6 三种循环语句的区别及注意事项

循环语句的区别:

do…while循环至少会执行一次循环体;

而for循环和while循环只有在条件成立的时候才会去执行循环体。

注意事项:

  1. 优先考虑for循环,再考虑while循环,最后考虑do…while循环;
  2. 关于死循环——要注意控制条件语句里控制的变量问题
  3. 两种基本死循环格式:
    1.  while(true){……}
    2. for(;;){……}

2.3.7 循环的嵌套使用

2.4 跳转控制语句

Java提供了break,continue和return来实现控制语句的跳转和中断。

2.4.1 break中断

break使用场景:

  1. switch语句中
  2. 循环语句中(循环语句中加入了if判断的情况)

break的作用:

  1. 跳出单层循环
  2. 跳出多层循环,需要标签语句的配合(格式:标签名:语句)

案例:

//break语句
class BreakDemo1 {
	public static void main(String[] args) {
		for(int x = 1;x <= 5;x++) {
			//跳出单层循环
			if(x == 3) {
				break;
			}
			System.out.println(x);
		}
		System.out.println("OVER");
	}
}
/*
输出结果:
1
2
OVER
*/
//break语句
class BreakDemo2 {
	public static void main(String[] args) {
		wc:for(int x=1;x<=3;x++) {
			nc:for(int y=1;y<=5;y++){
				//跳出单层循环(内循环)
				if(y==3){
					break nc;
				}
				System.out.print("*");
			}
			System.out.println();
		}
	}
}
/*
输出结果:
**
**
**
*/
//break语句
class BreakDemo2 {
	public static void main(String[] args) {
		wc:for(int x=1;x<=3;x++) {
			nc:for(int y=1;y<=5;y++){
				//跳出多层循环(外层循环)
				if(y==3){
					break wc;
				}
				System.out.print("*");
			}
			System.out.println();
		}
	}
}
/*
输出结果:
**
*/

 

2.4.2 continue继续

continue的使用场景:

  1. 循环语句中

continue的作用:

  1. 跳出单层循环的一次,可以继续执行下一次

案例

//continue语句
class ContinueDemo {
	public static void main(String[] args) {
		for(int x = 1;x <= 5;x++) {
			//跳出一次循环
			if(x == 3) {
				continue;
			}
			System.out.println(x);
		}
		System.out.println("OVER");
	}
}
/*
输出结果:
1
2
4
5
OVER
*/

与break的区别:

break直接结束循环

continue只跳一次循环,下次循环继续执行

2.4.3 return返回

return作用:用于结束方法,方法内return后的语句都不执行

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值