前言
首先,我们知道完成一件事,都是有先后步骤或者完成这件事的必要条件,这些其实都是这件事程序流程和条件控制。所以,在Java程序中,我写一个程序或者一个项目或者一个方法,都会有一定顺序和条件,我们这一讲主要是java的程序流程控制。
顺序结构
- 程序从上到下逐行地执行,中间没有任何判断和跳转。也就是流水线一样,一直写下去,这个比较好理解,对于Java没有特定的语法
分支结构
- 根据条件,选择性地执行某段代码。
- 有if...else和switch-case两种分支语句。
循环结构
- 根据循环条件,重复性的执行某段代码。
- 有while、do...while、for三种循环语句。
一、分支结构
1.1 if-else结构
if-else的结构如下,第一个判断条件用if,如果后面还有其他判断条件用else if ,最后默认的条件分支用else,if-else一旦其中一个分支满足条件就会跳出本次条件结构。
代码案例演示判断,分条件判断年龄
javascript
public class IfElseDemo {
public static void main(String args[]) {
int age = 18;
if (age < 0) {
System.out.println("未出生!");
} else if (age > 200) {
System.out.println("不是人!");
} else {
System.out.println("年龄 " + age + "啦!");
}
}
}
1.2 switch-case结构
switch-case的结构如下,switch括号里面写条件,每一个case对于一种情况,要注意的是,如果case内部没有break关键字(下面会讲解)的话,会继续判断下面的case是否符合条件,这个跟if-else有区别。
注意,switch中的表达式,是有规定的,不过不符合规则编译器也不报错。有如下规则:
switch(表达式)中表达式的值必须是下述几种类型之一:
byte,short, char,int,枚举 (jdk 5.0),String (jdk 7.0);
代码案例:
javascript
public class SwitchDemo {
public static void main(String[] args) {
// 表达式是整数判断
int i = 1;
switch (i) {
case 0:
System.out.println("零");
break;
case 1:
System.out.println("一");
break;
default:
System.out.println("不知道");
break;
}
// 表达式是字符串判断季节
String season = "summer";
switch (season) {
case "spring":
System.out.println("春天");
break;
case "summer":
System.out.println("夏天");
break;
case "autumn":
System.out.println("秋天");
break;
case "winter":
System.out.println("冬天");
break;
default:
System.out.println("不知道");
break;
}
}
}
二、循环结构
循环结构言外之意,就是在某些条件满足的情况下,反复执行特定代码的功能。
2.1 for 循环
语法结构:
执行顺序:
1-2-3-4-2-3-4-2-3-4-....2
说明:
-
循环条件部分:为boolean类型表达式,当值为false时,退出循环
-
初始化部分可以声明多个变量,但必须是同一个类型,用逗号分隔
-
可以有多个变量更新,用逗号分隔就
代码案例分析,循环计算从1 到 10的和
javascript
public class ForDemo {
public static void main(String args[]) {
int result = 0;
// 初始化i == 1, 判断 1是不是小于等于 10 ,是的话,加到result中,i继续加1,继续判断小于等于 10。。。
for (int i = 1; i <= 10; i++) {
result += i;
}
System.out.println("从1到10 " + result);
}
}
2.2 while 循环
语法结构:
执行顺序:
1-2-3-4-2-3-4-2-3-4-....2
代码案例分析,循环计算从1 到 10的和
2.3 do-while 循环
语法结构:
执行顺序:
1-2-3-4-2-3-4-2-3-4-....2
对比while循环,do-while循环至少执行一次循环体,因为do-while是执行完循环体之后才进行条件判断的
代码案例分析,循环计算从1 到 10的和。
javascript
public class DowhileDemo {
public static void main(String args[]) {
int result = 0;
// 初始化i == 1, 判断 i是不是小于等于 10 ,是的话,加到result中,i继续加1,继续判断小于等于 10。。。
int i = 1;
do {
result += i;
i++;
} while (i <= 10);
System.out.println("从1到10 " + result);
}
}
通过代码案例,可以发现上述三种循环结构是可以互相替换的。
三、特殊关键字的使用
讲完上面的三种循环结构之后,大家有没有想到一个问题,就是循环我们必须等循环条件不满足的时候才能拿终止循环,那有没有方法让循环提前终止呢?那是肯定有的,接下来,就介绍两个关于提前终止循环的关键字:breake 和 continue。
3.1 break
break语句用于终止某个语句块的执行,直接跳出循环,整个循环结束。
javascript
for (int j = 1; j <= 100; j++) {
if (10 == j){
System.out.println("找到 10 了");
break ;
}
System.out.println("还在找");
}
运行结果:找到10之后,整个循环结构就终止了。
3.2 continue
continue语句用于终止循环范围的某一次的执行,直接跳出当次循环,会接着继续下一个循环条件。
javascript
for (int j = 1; j <= 100; j++) {
if (10 == j){
System.out.println("找到 10 了");
continue ;
}
System.out.println(j + "还在找");
}
运行结果:我们可以看到,及时找到了10,循环并没有结束,j=10只是"还在找"的的语句没有了
注意:breake 和 continue只能终止最近的一个循环结构,如果嵌套多个循环结构可以指定终止那个循环体,语法结构是:continue/break 循环体名称。
如下代码,当两个循环判断i == j,就跳出外部 A 循环。
javascript
A:for (int i = 1; i <= 10; i++) {
for (int j = 1; j <= i; j++) {
if (i == j){
continue A;
}
}
}
总结
本讲主要是java的基本语法,包括分支结构( if-else结构、switch-case结构),循环结构(for 循环,while循环)以及两个重要的关键字break和continue,相信大家对java也有一个一定的了解了,并且也能够写一些简单代码。所以给大家两个小练习,欢迎大家去写写,结果代码我会放在评论后面,大家可以先自己手写,之后在看一下答案呢。
小练习:
- 99乘法表
- 查询100以内的质数
- ps:质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。