任何一种编程语言,都会有两种最基本的控制结构,分支结构(选择结构)和 循环结构 ,其中分支结构根据所给条件选择性执行某段代码,循环结构是根据循环条件重复执行某一段代码,在Java中,分支结构有两种,if 和 switch 两种,循环结构有三种,while、do while、for。在JDK5之后还提供了一种foreach循环结构,能以更简单的方式遍历集合或者数组元素。此外,Java还提供了 break 和 continue 来控制循环结构。
前方文章已经讲过顺序结构,依照程序从上到下一次逐行执行,按照这个流程执行就是顺序结构,在此就不多做解释。
分支结构会根据条件,执行整个 { } 里的内容.。(其实也可以不写{ } ,但是不推荐,因为只能执行条件之后的一句)
第一种: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 语句
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
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语句:每次循环都进行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语句:与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循环可以代替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使用方法如下,我在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(); } } }
将输出以下结果