您的位置:首页 > 编程语言 > Java开发

JAVA - 程序流程控制

2018-04-02 13:21 183 查看

JAVA - 程序流程控制

[blockquote]

任何语言要想运行,都必须定义相应的流程控制规则,开发者按照规则实现相应的算法与功能,就像加减乘除的运算优先级,那么Java中的流程控制有哪些那?又是怎么执行的,总结如下:

流程控制的分类:

1、顺序

2、分支

3、循环

[/blockquote]

顺序:

顺序执行,表示逐行执行相应的语句,不涉及任何的关键字。

举例 1:(顺序执行)

[java] view plain copy
  1. public class Test {  
  2.     public static void main(String[] args) {  
  3.   
  4.         int i = 1;  
  5.         System.out.println("我是第 " + (i++) + " 行");  
  6.         System.out.println("我是第 " + (i++) + " 行");  
  7.         System.out.println("我是第 " + (i++) + " 行");  
  8.         System.out.println("我是第 " + (i++) + " 行");  
  9.         System.out.println("我是第 " + (i++) + " 行");  
  10.     }  
  11. }  
输出:

[java] view plain copy
  1. 我是第 1 行  
  2. 我是第 2 行  
  3. 我是第 3 行  
  4. 我是第 4 行  
  5. 我是第 5 行  

分支:

分支控制,则需要按照判断条件动态的去执行符合条件的语句,需要使用关键字:

【if】 ,【else】 , 【三目:condition?true:false】,switch case: break default;

举例 1:(分支控制)

[java] view plain copy
  1. <pre name="code" class="java">public class Test {  
  2.     public static void main(String[] args) {  
  3.   
  4.         People man = new People(true, 7000f);  
  5.         // 1. use if else  
  6.         if (man.getSex()) {  
  7.             System.out.println("this is a man");  
  8.         } else {  
  9.             System.out.println("this is a female");  
  10.         }  
  11.   
  12.         // 2. use condition ? true :false  
  13.         float salary = man.getSalary();  
  14.         String 薪资级别 = salary > 1000f ? "高" : "低";  
  15.         System.out.println(薪资级别);  
  16.   
  17.     }  
  18. }  
  19.   
  20. class People {  
  21.   
  22.     private Boolean sex;// true is man ,false is female  
  23.     private float salary;  
  24.   
  25.     public People(boolean sex, float salary) {  
  26.         this.sex = sex;  
  27.         this.salary = salary;  
  28.     }  
  29.   
  30.     public float getSalary() {  
  31.         return salary;  
  32.     }  
  33.   
  34.     public Boolean getSex() {  
  35.         return sex;  
  36.     }  
  37.   
  38. }  


输出:

[java] view plain copy
  1. this is a man  
  2. 高  


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 ,方便了许多。如:

[java] view plain copy
  1. public class Test {     
  2.     public static void main(String[] args) {    
  3.         String name = "b";  
  4.         int value = 0;  
  5.         switch(name) {  
  6.             case "a":  
  7.                 value = 1;  
  8.                 break;  
  9.             case "b":  
  10.                 value = 2;  
  11.                 break;  
  12.             case "c":  
  13.                 value = 3;  
  14.                 break;  
  15.             case "d":  
  16.                 value = 4;  
  17.                 break;  
  18.             case "e":  
  19.                 value = 5;  
  20.                 break;  
  21.             default:  
  22.                 value = 6;  
  23.         }  
  24.         System.out.println(value);  
  25.     }    
  26. }  

循环

循环控制,则需要按照循环判断条件动态的去执行循环语句,需要使用关键字:

【for / foreach】【while / do……while】【标记】【continue】【break】

for 循环使用方法:

1、原for循环

for(初始化语句;判断语句;附加执行语句){ //附加执行语句可以不写,或者写在循环语句,主要用来对于循环条件的渐变

循环执行语句(可以配合【continue & break】控制循环)

}

2、新for循环

for(遍历单个元素:元素集合){

循环执行语句(可以配合【continue & break】控制循环)

}

举例 1: (for 循环控制)

[java] view plain copy
  1. public class Test {  
  2.     public static void main(String[] args) {  
  3.   
  4.         int[] intArr = new int[10];  
  5.         int j = 0;  
  6.         float z = 0;  
  7.         String s = "";  
  8.         for (int i = 0; i < intArr.length; i++,j++,z--,s=""+i) {// 1、原for循环,i++可以不写,或者写在intArr[i]= i + 1;下一行,至于j++,z-- 这句也可以写,可能在可读性上就差了许多  
  9.             intArr[i] = i + 1;  
  10.             if(i==5){  
  11.                 continue;//进行下次循环,后面的语句不执行,后面的执行语句 【i++,j++,z--,s=""+i --> i < intArr.length; --> intArr[i] = i + 1;】  
  12.             }  
  13.             if(i==7){  
  14.                 break;  
  15.             }  
  16.             System.out.print( "j = " + j + " ,");  
  17.             System.out.println( "z = " + z +" ,");  
  18.         }  
  19.         for (int i : intArr) {// 2、新for循环,不可以写附加执行语句  
  20.             System.out.print(i + " ,");  
  21.         }  
  22.   
  23.     }  
  24. }  

输出:

[java] view plain copy
  1. 1 ,2 ,3 ,4 ,5 ,6 ,7 ,8 ,9 ,10 ,  

while 循环使用方法:

1、while 循环 

while(循环判断条件){

循环语句(可以配合【continue & break】控制循环)

}

举例 1:(while / do ... while 循环)

[java] view plain copy
  1. public class Test {  
  2.     public static void main(String[] args) {  
  3.   
  4.         boolean flag = false;  
  5.           
  6.         //1、while 语句  
  7.         while (flag) {  
  8.             System.out.println("while");  
  9.             break;  
  10.         }  
  11.         System.out.println("--------------------------");  
  12.   
  13.         //2、do while 语句  
  14.         do {  
  15.             System.out.println("do ... while");  
  16.             break;  
  17.         } while (flag);// 注意while(flag)属于判断语句,不在属于循环体,所以必须加上“;”结束该语句。  
  18.   
  19.     }  
  20.   
  21. }  


输出:

[java] view plain copy
  1. --------------------------  
  2. do ... while  
1、while 首先它回去判断while中的条件,条件不符合则不执行循环语句(循环体)。

2、do……while,首先它不会去判断while中的条件,而是直接执行循环语句,输出了第一元素,再去判断while中的条件。如果符合条件再次进入循环语句。

循环中标记的使用方法:


标记的定义:

loop:循环语句

        loop1:for(int i = 0;i<10;i++){
            
        }

        loop2:while(true){
            
        }
        
注意:do...while 貌似不可以定义标记。

举例 1:(标记的使用)

[java] view plain copy
  1. public class Test {  
  2.     public static void main(String[] args) {  
  3.   
  4.         int[] intArr = new int[] { 1, 2 };  
  5.         int[] intArr2 = new int[] { 2, 3, 4 };  
  6.   
  7.         // 判断intArr1中元素是否存在于intArr2  
  8.         boolean result = false;  
  9.         loop: for (int i : intArr2) {// 定义标记loop 指向此行中的for语句段的结束,即执行的下一句是【System.out.println("\nresult = " +result);】  
  10.             for (int j : intArr) {  
  11.                 if (i == j) {  
  12.                     result = true;  
  13.                    <strong> break loop;</strong>  
  14.                 }  
  15.             }  
  16.             System.out.print(i + " ,");  
  17.         }  
  18.         System.out.println("\nresult = " + result);  
  19.     }  
  20. }  

注意:

   标记只能定义在一个语句块(for 或者 while循环条件行或者{……}),指定不再满足条件,进行语句块下面的语句,标记类于语句块中的局部变量,所以可以重复定义,且语句块外不可以使用该标记。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: