JAVA - 程序流程控制
任何语言要想运行,都必须定义相应的流程控制规则,开发者按照规则实现相应的算法与功能,就像加减乘除的运算优先级,那么Java中的流程控制有哪些那?又是怎么执行的,总结如下:
流程控制的分类:
1、顺序
2、分支
3、循环
顺序:
顺序执行,表示逐行执行相应的语句,不涉及任何的关键字。
举例 1:(顺序执行)
输出:
- public class Test {
- public static void main(String[] args) {
- int i = 1;
- System.out.println("我是第 " + (i++) + " 行");
- System.out.println("我是第 " + (i++) + " 行");
- System.out.println("我是第 " + (i++) + " 行");
- System.out.println("我是第 " + (i++) + " 行");
- System.out.println("我是第 " + (i++) + " 行");
- }
- }
- 我是第 1 行
- 我是第 2 行
- 我是第 3 行
- 我是第 4 行
- 我是第 5 行
分支:
分支控制,则需要按照判断条件动态的去执行符合条件的语句,需要使用关键字:
【if】 ,【else】 , 【三目:condition?true:false】,switch case: break default;
举例 1:(分支控制)
- <pre name="code" class="java">public class Test {
- public static void main(String[] args) {
- People man = new People(true, 7000f);
- // 1. use if else
- if (man.getSex()) {
- System.out.println("this is a man");
- } else {
- System.out.println("this is a female");
- }
- // 2. use condition ? true :false
- float salary = man.getSalary();
- String 薪资级别 = salary > 1000f ? "高" : "低";
- System.out.println(薪资级别);
- }
- }
- class People {
- private Boolean sex;// true is man ,false is female
- private float salary;
- public People(boolean sex, float salary) {
- this.sex = sex;
- this.salary = salary;
- }
- public float getSalary() {
- return salary;
- }
- public Boolean getSex() {
- return sex;
- }
- }
输出:
- this is a man
- 高
switch case: break default;
对于Switch语句的介绍,只能说尽量少用,只用于解决多分支情况时的过度if else重复逻辑,在Switch可以使用的值有char Enum 字符串(JDK 7),使用时要注意两点:
1、每个case一定要跟上break,有些逻辑需要可能出现 case 1--> case 2 break; 这种需要特别的注意
2、必须指定default分支
注意:在JDK 1.7中支持了String ,方便了许多。如:
- public class Test {
- public static void main(String[] args) {
- String name = "b";
- int value = 0;
- switch(name) {
- case "a":
- value = 1;
- break;
- case "b":
- value = 2;
- break;
- case "c":
- value = 3;
- break;
- case "d":
- value = 4;
- break;
- case "e":
- value = 5;
- break;
- default:
- value = 6;
- }
- System.out.println(value);
- }
- }
循环
循环控制,则需要按照循环判断条件动态的去执行循环语句,需要使用关键字:
【for / foreach】【while / do……while】【标记】【continue】【break】
for 循环使用方法:
1、原for循环
for(初始化语句;判断语句;附加执行语句){ //附加执行语句可以不写,或者写在循环语句,主要用来对于循环条件的渐变
循环执行语句(可以配合【continue & break】控制循环)
}
2、新for循环
for(遍历单个元素:元素集合){
循环执行语句(可以配合【continue & break】控制循环)
}
举例 1: (for 循环控制)
- public class Test {
- public static void main(String[] args) {
- int[] intArr = new int[10];
- int j = 0;
- float z = 0;
- String s = "";
- for (int i = 0; i < intArr.length; i++,j++,z--,s=""+i) {// 1、原for循环,i++可以不写,或者写在intArr[i]= i + 1;下一行,至于j++,z-- 这句也可以写,可能在可读性上就差了许多
- intArr[i] = i + 1;
- if(i==5){
- continue;//进行下次循环,后面的语句不执行,后面的执行语句 【i++,j++,z--,s=""+i --> i < intArr.length; --> intArr[i] = i + 1;】
- }
- if(i==7){
- break;
- }
- System.out.print( "j = " + j + " ,");
- System.out.println( "z = " + z +" ,");
- }
- for (int i : intArr) {// 2、新for循环,不可以写附加执行语句
- System.out.print(i + " ,");
- }
- }
- }
输出:
- 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,
while 循环使用方法:
1、while 循环
while(循环判断条件){
循环语句(可以配合【continue & break】控制循环)
}
举例 1:(while / do ... while 循环)
- public class Test {
- public static void main(String[] args) {
- boolean flag = false;
- //1、while 语句
- while (flag) {
- System.out.println("while");
- break;
- }
- System.out.println("--------------------------");
- //2、do while 语句
- do {
- System.out.println("do ... while");
- break;
- } while (flag);// 注意while(flag)属于判断语句,不在属于循环体,所以必须加上“;”结束该语句。
- }
- }
输出:
1、while 首先它回去判断while中的条件,条件不符合则不执行循环语句(循环体)。
- --------------------------
- do ... while
2、do……while,首先它不会去判断while中的条件,而是直接执行循环语句,输出了第一元素,再去判断while中的条件。如果符合条件再次进入循环语句。
循环中标记的使用方法:
标记的定义:loop:循环语句
loop1:for(int i = 0;i<10;i++){
}
loop2:while(true){
}
注意:do...while 貌似不可以定义标记。举例 1:(标记的使用)
- public class Test {
- public static void main(String[] args) {
- int[] intArr = new int[] { 1, 2 };
- int[] intArr2 = new int[] { 2, 3, 4 };
- // 判断intArr1中元素是否存在于intArr2
- boolean result = false;
- loop: for (int i : intArr2) {// 定义标记loop 指向此行中的for语句段的结束,即执行的下一句是【System.out.println("\nresult = " +result);】
- for (int j : intArr) {
- if (i == j) {
- result = true;
- <strong> break loop;</strong>
- }
- }
- System.out.print(i + " ,");
- }
- System.out.println("\nresult = " + result);
- }
- }
注意:
标记只能定义在一个语句块(for 或者 while循环条件行或者{……}),指定不再满足条件,进行语句块下面的语句,标记类于语句块中的局部变量,所以可以重复定义,且语句块外不可以使用该标记。