4.基礎(二):流程控制

條件語句和循環語句java

條件語句:if、switch;數組

if語句中的表達式必須是boolean型的,if和else後面的 「{}」能夠沒有語句,當if後面的語句序列有且僅有一條語句時,外面的大括號能夠省略(不建議省略);code

<!-- lang: java -->
//在真實的項目中,應當注意if語句後面的{}符號
               if (1+1 == 2)
              System.out .println( "第一條語句") ;
              System. out.println( "第二條語句" );
              System. out.println( "第三條語句" );

分析: 以上的程序將會輸出 三條語句,若是將if表達式裏的 == 改爲 != ,則第一條語句不會輸出,其餘語句照樣輸出。 if後面若是省略了外面的大括號,則只表示第一句語句序列是屬於if分支的,而其他的是屬於其餘塊做用域的(類或方法); 因此若是省略了大括號,須要注意它與else的嵌套使用,如上面的程序,else只能寫在第一條語句以後(以前和第二條以後都會出錯); 同時else若是也省略了外面的大括號,那麼跟if後面的同樣,後面的複合語句中只有一條屬於else的塊做用域。element

if()else(){
                if(){};
                }

switch語句的格式結構:作用域

<!-- lang: java -->
//switch語句的基本格式
              switch ( 判斷值) {
              case 數值1:
                   知足此數值時執行的語句 ;
                   [ break ;]
              case 數值2:
                   知足此數值時執行的語句 ;
                   [ break ;]
                     ....
              default:
                   全部條件都不知足時執行的語句 ;
                   [ break ;]

switch語句中:字符串

1 .表達式必須是整型(byte,short,int,long),字符型(char);
2. JDK1.7新增了對字符串類型(String)的支持;
3. case裏的值必須跟switch語句的數據類型一致,且多條case之間不能出現數值重複;
4. default語句可選,它用於處理沒有一個case語句知足時才執行,若是它不存在,並且case語句中的值都不知足時,switch不作任何處理;
5. case分支語句的末尾若是沒有break關鍵字,那麼將觸發多個case分支。it

<!-- lang: java -->
//注意缺乏了break關鍵字所觸發的語句
         int i = 3;
         switch(i){
         case 1 :
              System. out.print(1);
         case 2 :
              System. out.print(2);
         case 3 :
              System. out.print(3);
         case 4 :
              System. out.print(4);
         case 5 :
              System. out.print(5);
               break;
         case 6 :
              System. out.print(6);
         default :
              System. out.print( "helloworld");
        }

      /* 分析:以上程序會打印出 345 ,
        * 它從case 3 開始匹配,直到 case 5 語句裏break中止,
        * 若是沒有break,那麼 6 和 default的"helloworld" 也會執行;
        *  若是此時把default語句塊放在 case3 以前,則不會執行;
        */

再換一種比較極端的狀況,如:for循環

<!-- lang: java -->
    //注意default語句的執行狀況
        int i = 7;
         switch(i){
         default :
              System. out.println( "helloworld");
         case 1 :
              System. out.println(1);
         case 2 :
              System. out.println(2);
         case 3 :
              System. out.println(3);
        }

      /* 分析:以上程序會打印出全部的語句.
        * 若是不改變 i 的值,而case 語句同樣沒有匹配的常量值,
        * 那麼把default 放在 case 2 以後,case 1 和 case 2 都不會執行;
        */

break和continue的區別:(注:二者可用於全部循環語句,break可用於switch語句)
break:直接跳出循環,終止整個循環體;
continue:中止當前循環,繼續執行後面的循環,不會終止整個循環;變量

循環語句:for、while;循環

while循環: 1. 必定要有循環的結束判斷; 2. 每次循環體執行的時候,循環條件要求修改。

for循環:for循環的兩種寫法,兩種實現的是同樣的功能。不成文的規則:for語句的三個部分應該對同一個計數器變量進行初始化、檢測和更新;

第一種: for (循環的初始值 ; 循環的判斷條件 ; 循環條件的修改) { 循環體 ; }

第二種: 循環的初始值 for ( ; 循環的判斷條件 ; ) { 循環體; 循環條件的修改; }

跟if語句同樣,當for後面的語句序列有且僅有一條語句時,外面的大括號能夠省略(不建議省略);

<!-- lang: java -->

              for (int j = 0; j < 3; j++)
              System. out.println(j);
              System.out.println(j);   //這裏繼續用for語句裏定義的變量則會報錯,由於該語句塊已經再也不for循環體的範圍

同理,下面將是一個死循環(跟while循環同樣,這中for語句幾乎不存在可省略大括號的狀況):

<!-- lang: java -->

             int j = 0;
              for (; j < 3; )
                   System. out.println(j);
                   j++;

JDK5.0以後新增了for each循環(又稱通用for循環):是for循環的增強版,主要用於對數組和集合的迭代; 這種循環的好處是使循環語句更加簡潔、更不容易出錯(不用關心數組下標),缺點是不能直接訪問一個具體的小標值,因此不存在能夠取代傳統的for語句的那些說法;

for (數據類型 變量 : 數組 | 集合) {
                                    // 操做代碼
                }

例如for(int element : a) { .... } 這個循環的讀法:循環 a 中的每個元素(for each element in a).——(核心技術)

相關文章
相關標籤/搜索