1、顺序结构
任何语言程序中最常见的就是顺序结构,就是自上到下逐行的进行执行,中间没有任何跳转和判断。
2、分支结构
Java 提供两种常见的分支控制结构,if语句 和 switch语句,其中if语句是使用布尔表达式或者布尔值来作为分支机构条件来进行控制,而switch语句则用于多个整型值进行匹配来进行控制。
2.1、if条件语句
2.1.1、if
if(逻辑表达式){
代码块;
}
2.1.2、if else
if(逻辑表达式){
代码块1;
}else{
代码块2;
}
2.1.3 、if else if
if(逻辑表达式1){
代码块1;
}else if(逻辑表达式2){
代码块2;
}else{
代码块3
}
2.1.4、总结
- if之后的括号里只能是一个逻辑表达式,即这个表达式的值只能返回true或false。
- 如果if、else if、else后只有一条语句,后面的花括号可以省略。(Tips:通常不建议省略,保留会增加程序的可读性,并且会减少错误的发生!)
- 当使用if…else语句进行流程控制是,一定不要忽略else所带的隐含条件。
2.1.5、小例题,判断一个三位数是不是水仙花数
//一个三位数,它各个位的三次方之和等于这个数本身的话,则这个数就叫做水仙花数
//从键盘接收一个数,判断这个数是不是水仙花数。
import java.util.Scanner;//导包
class IfTest{
public static void main(String[] args) {
//创建Scanner对象
Scanner input = new Scanner(System.in);
//提示
System.out.println("请输入一个三位的整数:");
//接收键盘输入
int num = input.nextInt();
//判断是否为三位数
if (num >= 100 && num <= 999) {
int numBw = num / 100,
numSw=num / 10 % 10,
numGw = num % 10;
//Math.pow(a,b);求a的b次方
int numAdd = (int) (Math.pow(numBw, 3) +
Math.pow(numSw,3) +
Math.pow(numGw, 3));
if (num == numAdd) {
System.out.println(num + "是水仙花数。");
} else {
System.out.println(num + "是不是水仙花数。");
}
} else {
System.out.println("输入的数不是一个三位的整数!");
}
}
}
2.2、switch
switch是由一个表达式和多个case标签组成的,与if不同的是,switch语句后面控制的表达式类型只能是byte、short、int、char四种整是类型、枚举类型和java.lang.String(Java7之后才支持),不能是boolean类型。
2.2.1、switch表达式
switch(表达式){
case 条件1:{
代码块;
break;}
case 条件2:{
代码块;
break;}
…………
case 条件N:{
代码块;
break;}
default:{
代码块;}
2.2.2、总结
- 做等值操作时,可以选择switch case完成。
- switch分支语句,先对表达式求值,然后依次匹配条件1、条件2、…、条件N,遇到匹配的的值时,执行代码块;如都不匹配,则执行default标签后的代码块。
- switch中各case后的花括号可以省略,且case可以编写任意多个。
- case和default后的break是可有可无的,如果遇到break,则结束整个switch case;如果没有break,则会从第一个匹配的case或default一直向下执行语句,其实也就构成穿透,因此要根据合适位置写break。
- case是可以进行合并的。
- Java7增强了switch的功能,允许switch控制的表达式java.lang.String类型的变量或表达式,不能是StringBuffer或者StringBuilder这两种字符串类型。例:
public static void main(String[] args) {
String sex ="女";
switch (sex){
case "男":
System.out.println("男孩");
break;
case "女":
System.out.println("女孩");
break; // 输出结果为:女孩
}
}
2.2.3、小例题
import java.util.*;
class SwitchTest{
public static void main(String[] args) {
//根据考试成绩获得奖励,如果考100分母亲给她买电脑,
//如果考90分以上母亲给她买台平板,
//如果考60分以上母亲给她买部手机,如果考60分以下没有任何礼物。
Scanner input = new Scanner(System.in);
System.out.println("请输入成绩:");
int score = input.nextInt();
if (score >= 0 && score <= 100) {
switch(score / 10) {
case 10:
System.out.println("买电脑");
break;
case 9:
System.out.println("买平板");
break;
case 8:
case 7:
case 6:
System.out.println("买手机");
break;
default:
System.out.println("没有任何奖励");
}
}else{
System.out.println("请输入正确的成绩!");
}
}
}
3、循环结构
循环语句可以在满足循环条件的情况下,反复的执行一段代码,被反复执行的代码块被称为循环体。当条件为假时,结束循环,否则,循环会一直执行下去。
循环语句可能包括以下四部分:
1.初始化语句:一条或多条语句,用于完成一些初始化工作,在循环之前执行。
2.循环条件:Boolean表达式,用于判断是否执行循环体。
3.循环体:如果条件为真,则此代码块会一直循环执行。
4.循环迭代语句:在一次循环体执行完后,对循环条件求值前执行,用于控制循环中的变量,使循环在合适条件下结束
3.1、while
3.1.1、while表达式
while 是先进行条件判断,若条件为真则执行循环体。
例如一个简单的小循环:
//初始化语句;
int num = 10;
//while(循环条件)
while(num <=10 && num > 0){
//循环体;
System.out.println(num);
//循环迭代语句;
num--;
}
System.out.println("循环结束!");
3.2、do while
do while和while的区别就在于,do while是先执行循环体,再进行判断,如果条件为真,则执行下一次循环,否则终止循环。
3.2.1、do while表达式
//初始化语句
int i = 10;
do(
//循环体
System.out.println(i);
//循环迭代语句
i--;
//while(循环条件); <-----注意:以英文下的分号结尾。
}while(i <=10 && i > 0);
System.out.println("循环结束!");
即使循环开始的条件为假,do while 的循环体也至少进行一次循环。
因为do while 是先执行循环体再进行条件判断!
3.3、for
3.3.1、for表达式
//for(初始化语句;循环条件;循环迭代语句)
for(int i = 1; i < 10 ; i++){
//循环体
System.out.println(i);
}
System.out.println("循环结束");
3.3.2、for注意事项
- for循环更加简洁,大部分情况下可以代替while语句和do while语句。
- for循环允许同时指定多个初始化语句(必须是相同数据类型),循环条件也可以是一个包含逻辑运算符的表达式。例:
for(int i= 0, int j = 0; i >= 0 && j < 5;i++ )
System.out.println(i);
System.out.println(j);
}
- 建议不要在循环体内修改循环变量(如例中i++),否则会增加程序程序出错的可能性,如真需要修改,建议定义一个临时变量,将循环变量的值赋给临时变量,然后对临时变量进行修改。例:
int temp = 0;
for(int i= 0; i >= 0 && i < 5 ; i++ )
System.out.println(i);
//定义一个临时变量
temp = i ;
temp *= 0.1;
System.out.println(temp);
}
3.4、嵌套循环
把一个循环放到另一个循环体内,那么就可以形成嵌套循环。嵌套循环外层的叫外层循环,内层的叫内层循环,各种类型的循环都可以是外层/内层循环。
当嵌套循环开始执行时,内层循环其实就是外层循环的循环体,当内层循环为false时,才会跳出内循环,结束外层循环的当次循环,开始下一次循环。例如:
for(;;){//外层循环
for(;;){//内侧循环
//循环体
}
}
3.4.1、小例题、九九乘法表
class CircuTest {
public static void main(String[] args) {
//输出九九乘法表
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "x" + i + "=" + i * j + "\t");
}
System.out.println("");
}
}
}
结果如下:
3.5、for语句、while语句、do while语句的异同点
- 语法格式不同。
- 执行流程不同。
for语句和while语句都是先判断循环条件,当为true时,再执行循环体
do while语句是先执行循环体,再判断循环条件。
- 使用情况不同。
当次数固定时:建议使用for语句
当次数不固定时,建议使用while语句或do while语句,其中先判断再执行的建议使用while语句,先执行再判断的建议使用do while语句。
- 当循环条件第一次就为false时,则
for语句执行0次循环。
while语句执行0次循环。
do while语句执行1次循环。
4、 break、return、continue区别
break
- 表示中断。
- 可以在switch case中使用,也可以在循环中使用。
- 当遇到break则结束当前整个switch case或者循环,执行外面的语句。
return
- 表示继续。
- 只能在循环中使用
- 当遇到continue则结束本次循环(当次循环),继续执行下一次循环
continue
- 表示返回。
- 在方法中使用。
- 当遇到return,则结束当前整个方法的执行,返回到方法的调用处。
最后修改于:2019年11月26日