前言
任何一种编程语言,都会有两种最基本的控制结构,分支结构(选择结构)和 循环结构 ,其中分支结构根据所给条件选择性执行某段代码,循环结构是根据循环条件重复执行某一段代码,在Java中,分支结构有两种,if 和 switch 两种,循环结构有三种,while、do while、for。在JDK5之后还提供了一种foreach循环结构,能以更简单的方式遍历集合或者数组元素。此外,Java还提供了 break 和 continue 来控制循环结构。
顺序结构
前方文章已经讲过顺序结构,依照程序从上到下一次逐行执行,按照这个流程执行就是顺序结构,在此就不多做解释。
分支结构(选择结构)
分支结构会根据条件,执行整个 { } 里的内容.。(其实也可以不写{ } ,但是不推荐,因为只能执行条件之后的一句)
if 语句
第一种:if语句
public class Main {
public static void main(String[] args) {
int a = 6;
int b = 3;
if (a > b) {
System.out.println("是的,a大于b");
}
}
}
if…else 语句
第二种:if…else 语句
public class Main {
public static void main(String[] args) {
int a = 6;
int b = 3;
if (a > b) {
System.out.println("是的,a大于b");
}else{
System.out.println("其实 a 小于 b");//这是不执行的,这里是个例子
}
}
}
if…else if 语句
第三种:if…else if
public class Main {
public static void main(String[] args) {
int a = 6;
int b = 3;
if (a > b) {
System.out.println("是的,a大于b");
} else if (a < b) {
System.out.println("其实 a 小于 b");//这是不执行的,这里是个例子
} else {
System.out.println("其实 a 不大于 b 也不小于 b ,而是相等的");//这是不执行的,这里是个例子
}
}
}
第四种:switch,一般使用情况如下。当执行选择时,case 后是条件,有合适number条件后,执行case之后,到下一个break之间的代码,可以不写break,但是会穿透,继续执行。另外,default是没有符合条件时候执行的,可以理解为“其它情况”。
public class Main {
public static void main(String[] args) {
int number = 8;
switch (number) {
case 5:
System.out.println("数字是5");
break;
case 6:
System.out.println("数字是6");
break;
case 7:
System.out.println("数字是7");
break;
case 8:
System.out.println("对应执行这里的代码");
System.out.println("对应执行这里的代码");
break;
case 9:
System.out.println("数字是9");
break;
default:
System.out.println("没有合适的条件");
}
}
}
也可以用于String类型的数据
public class Main {
public static void main(String[] args) {
String name = "第三女神";
switch (name) {
case "两行代码":
System.out.println("两行代码");
break;
case "第三女神":
System.out.println("第三女神");
System.out.println("对应执行这里的代码");
System.out.println("对应执行这里的代码");
break;
case "程序员":
System.out.println("程序员");
break;
case "设计师":
break;
default:
System.out.println("以上都不是");
}
}
}
也可以用于char类型
public class Main {
public static void main(String[] args) {
char name = 'm';
switch (name) {
case 'a':
System.out.println("a");
break;
case 'c':
System.out.println("c");
break;
case 'd':
System.out.println("d");
break;
case 'e':
break;
default:
System.out.println("对应执行这里的代码");
System.out.println("对应执行这里的代码");
}
}
}
循环结构
循环结构是在满足给定条件下,反复执行某一行或者某一段代码,这就是循环结构,可以通过控制条件来实现循环多少次,又或者是满足某种情况后跳出循环。
while语句
while语句:每次循环都进行a++(a的自身+1),直到a大于等于5的时候会跳出循环,这是根据循环条件来控制的,while循环结构的特点是
public class Main {
public static void main(String[] args) {
int a = 0;
while (a <5) {
a++;
System.out.println("这一段被多次执行");
}
}
}
将输出以下结果:
当使用While循环时,一定要保证循环条件能够变成false,这样才能够退出循环,否则,将会成为死循环,如上,将a++那一行去掉,就会变成死循环,条件永远满足a<5。
do while 语句
do while语句:与while有不同之处,while循环语句是循环之前,先进行一次条件判断,而后符合条件才会继续执行,do while 是先进入循环体,之后再判断条件是否满足,满足则继续循环,否则终止循环,继续向下执行。
public class Main {
public static void main(String[] args) {
int a = 11;
do {
System.out.println("我被执行了!");
} while (a < 10);
}
}
将输出以下结果:
由此可见,while是先判断再执行,do while是先执行再判断,如上do while,a是大于10的,但还是先进入了循环体先执行了一次!
for 循环语句
for循环是更加简洁的循环语句,在一般情况下,for循环可以代替while循环语句和do while循环语句(我大部分都使用for循环语句,while和do while不能说没有,但是很少使用)
基本语句如下:
在第五行括号中,有两个分号分成了三部分,
第一部分:指的是初始化的一个变量
第二部分:指的是循环条件
第三部分:指的是每次循环对变量值的操作
for循环语句同时也是可以在循环体内修改变量值,但是我不建议这么做(你能熟练运用也好,刚开始我不建议你那样写)
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
System.out.println("循环index:" + i);
}
}
}
将输出以下结果:
continue 和 break
continue:结束本次循环执行下一次循环
break:跳出循环
continue使用方法如下,我在for循环体中加入了一个条件判断,当符合条件时候,就会结束本次循环,继续执行下一次循环:
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
if (i == 5) {
continue;
}
System.out.println("循环index:" + i);
}
}
}
将输出以下结果:(没有输出5)
break使用基本如下:在以上代码稍作修改
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
if (i == 5) {
break;
}
System.out.println("循环index:" + i);
}
}
}
将输出以下结果:(在满足i等于5的时候会跳出循环)
也可以用return进行循环的结束:(意味着程序结束,第12行代码根本不会执行)
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
if (i == 5) {
return;
}
System.out.println("循环index:" + i);
}
System.out.println("循环结束");
}
}
将会输出以下结果:
综合使用
for循环中可以加入if判断,同理if也能嵌套for循环,可以利用这三种结构各自的特点,来进行综合使用,达到更佳的效果。下面就是一个实用案例!
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
if (i % 2 == 0) {
System.out.println("偶数" + i);
} else {
System.out.println("奇数" + i);
}
}
}
}
程序将输出以下结果:
也可以利用双重for循环轻易地输出一个乘法口诀表
\t是制表符,System.out.print 和 System.out.println 区别是一个是不换行输出,一个是换行输出
public class Main {
public static void main(String[] args) {
for (int i = 1; i < 10; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + j * i + "\t");
}
System.out.println();
}
}
}
将输出以下结果