1、顺序结构
顺序结构语句是Java程序默认的执行流程,按照代码的先后顺序,从上到下依次执行。
2、分支结构
1、if语句
(1)、if语句的第一种格式,格式如下:
if (关系表达式){
语句体;
}
例如:
if( a > b ){
System.out.println("a是大于b的");
}
1、首先计算表达式的值
2、如果表达式的值为true就执行语句体
3、如果表达式的值为false就不执行语句体
4、然后继续执行后面的其他语句
注意事项:
如果对一个布尔类型的变量进行判断,不要用==号,直接把布尔类型的变量写在括号中。如下:
boolean ss = false;
if(ss){
System.out.println("小明是个学生");
}
(2)、if语句的第二种格式,格式如下:
if (关系表达式){
语句体1;
} else{
语句体2;
}
例如:
if( a > b ){
System.out.println("a是大于b的");
} else{
System.out.println("a是小于b的");
}
1、首先计算表达式的值
2、如果表达式的值为true就执行语句体1
3、如果表达式的值为false就执行语句体2
4、然后继续执行后面的其他语句
注意事项:
如果对一个布尔类型的变量进行判断,不要用==号,直接把布尔类型的变量写在括号中。如下:
boolean ss = false;
if(ss){
System.out.println("小明是个学生");
}
2、switch语句。语句格式如下:
switch(表达式) {
case 值1: //注意case与值1之间必须有一个空格
语句体1;
break;
case 值2: //注意case与值2之间必须有一个空格
语句体2;
break;
.............. //此处为省略号,不是分界线
default:
语句体n+1;
break;
}
执行流程:
1、首先计算表达式的值,表达式在书写的时候一定是一个变量,不能是一个定值。
2、将表达式的值依次和case后面的值进行比较,如果有对应的值,就会执行相应的语句体,
在执行的过程中,遇到break就会结束。
3、如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后
结束整个switch语句。
格式说明:
1、case后面的匹配的值取值为byte、short、int、char。JDK5以后可以是枚举类型,JDK7以后可以是String类型
2、case:后面跟的是要和表达式进行比较的值(被匹配的值)。
3、break:表示中断、结束的意思,用来结束switch语句。
4、default:表示所有情况都不匹配的时候,就执行该处的内容。可以放在switch的任意位置,但是最后判断
5、case后面的值只能是字面量,不能是变量。
6、case给出的值不允许重复。
7、switch的结束条件,碰到break或者右大括号。
8、case后面如果没有break,就会发生穿透现象,直接执行下一个语句体,而不需要判断。
实战1
String noodles = "兰州拉面";
switch(noodles){
case "兰州拉面": System.out.println("吃兰州拉面");
break;
case "热干面": System.out.println("吃热干面");
break;
default: System.out.println("方便面");
break;
}
实战2:
Scanner sc = new Scanner(System.in);
int week = sc.nextInt();
switch (week){
case 1: System.out.println("跑步");
break;
case 2: System.out.println("游泳");
break;
default : System.out.println("跳绳");
break;
}
switch新特性:
switch(week){
case 1,2,3,4,5 -> System.out.println("工作日");
case 6,7 -> System.out.println("休息日");
default -> System.out.println("没有这个星期");
}
3、循环结构
1、for循环
格式如下:
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
执行流程如下:
1、执行初始化语句。
2、执行条件判断语句,看其结果是true还是false,
如果是false,循环结束;如果是true,执行循环体语句。
3、执行条件控制语句。
4、返回到流程2,继续执行条件判断语句。
注意:
1、初始化语句只执行一次。
2、判断语句为true,循环继续。
3、判断语句为false,循环结束。
实践练习:
题目要求:键盘录入两个数字,表示一个范围。统计这个范围中,既能被3整除,又能被5整除的数字有多少个?
核心代码如下:
Scanner sc = new Scanner(System.in);
System.out.println("请录入一个数字表示范围的开始");
int start = sc.nextInt();
System.out.println("请录入一个数字表示范围的结束");
int end = sc.nextInt();
int count = 0; //计数器,用来统计数目
for(int i = start; i <= end; i++){
if( i%3 ==0 && i%5 ==0){
count++;
}
}
System.out.println(count); //打印统计的数目
2、while循环
格式如下:
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
注意:
1、初始化循环只执行一次。
2、判断语句为true,循环继续。
3、判断语句为false,循环结束。
for循环和while循环的区别:
for循环中:知道循环次数或循环的范围。
while循环:不知道循环的次数和范围,只知道循环结束的条件。
while循环实战:回文数
题目要求:给你一个整数x,如果x是一个回文数,打印true,否则,打印false。
解释:回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如12321
核心代码如下:
核心思路:把数字倒过来跟原来的数字进行比较
int x=12345; //定义数字
int temp=x; //将数字记录在临时变量temp中,方便以后比较
int num=0; //用num记录倒过来之后的结果
while(x!=0){
int ge=x%10; //从右往左获取每一位数字
x=x/10; //修改一下x记录的值
num=num*10+ge; //把当前获取到的数字拼接到最右边
}
System.out.println(num==temp); //将最后获取到的数字num和定义的数字进行比较
3、do...while循环
格式如下:
初始化语句;
do{
循环体语句;
初始化变量的改变;
} while(条件判断语句);
2、执行流程:
(1) 执行初始化语句
(2) 执行循环体语句
(3) 执行初始化变量的改变
(4) 计算循环条件表达式的值,如果为false,结束循环
(5) 如果为true,回到第二步
补充内容:
System.out.println();带换行效果的输出
System.out.print();不带换行效果的输出
4、for-each循环
for-each 循环通常用于对数组或集合的遍历,该循环方式不需要初始变量,不需要条件,不需要下标来自增或者自减。格式如下:
for(元素类型 元素 : 数组名或集合名){
需要循环的内容
}
解析:
元素类型:是指需要遍历的数组或集合中的元素是什么类型的
元素:需要遍历的数组或集合中元素的名字(此处的名字可以随便命名)
数组名或集合名:被循环的数组或集合的名字
案例如下:
public class ForEachExample {
public static void main(String[] args) {
String[] strs = {"张三","李四","王二"};
for (String str : strs) {
System.out.println(str);
}
}
}
输出结果如下:
张三
李四
王二