到頭來仍是逃不過Java - 流程控制

沒有特殊說明,個人全部這個系列的Java13的筆記都是從廖老師那裏摘抄、總結過來的,侵刪java

引言

兜兜轉轉到了大四,學過了C,C++,C#,Java,Python,學一門丟一門,到了最後仍是要把Java撿起來。雖然Python好寫舒服,可是畢竟不能徹底面向對象,也沒有那麼多的應用場景,因此,奉勸看到本文的各位,仍是提早學好C#或者Java,話很少說,這個系列,幹就完了!數組

輸出

  • println是print line的縮寫,表示輸出並換行。所以,若是輸出後不想換行,能夠用print()
  • 格式化輸出使用System.out.printf(),經過使用佔位符%?printf()能夠把後面的參數格式化成指定格式
  • 因爲%表示佔位符,所以,連續兩個%%表示一個%字符自己。
佔位符 說明
%d 格式化輸出整數
%x 格式化輸出十六進制整數
%f 格式化輸出浮點數
%e 格式化輸出科學計數法表示的浮點數
%s 格式化字符串

輸入

  • 導入java.util.Scanner,建立Scanner對象並傳入System.inScanner會自動轉換數據類型,所以沒必要手動轉換

if判斷

  • if語句塊只有一行語句時,能夠省略花括號{},可是儘可能不要省略花括號,這樣在版本控制系統的時候會出現問題。
  • 串聯多個if時正確的方式是按照判斷範圍從大到小依次判斷,或者從小到大判斷,不要從中間範圍判斷。
  • if時,還要特別注意邊界條件,>>=是不一樣的。
  • 注意判斷浮點數相等用==判斷不靠譜,正確的方法是利用差值小於某一個臨界值來判斷。app

  • 判斷引用類型相等ui

    • 在Java中,判斷值類型的變量是否相等,能夠使用==運算符。可是,判斷引用類型的變量是否相等,==表示是否指向同一個對象,卻不表示對象的值是否相同。
    • 要判斷引用類型的變量值的內容是否相等,必須使用equals()方法
      • 若是使用equals()時其中一個變量是null那麼會報錯NullPointerException
      • 能夠把一個必定不是null的變量放到前面"hello".equals(s)

switch多重選擇

  • 使用switch時,注意case語句並無花括號{}3d

  • 若是有幾個case語句執行的是同一組語句塊,能夠在執行語句前多放幾個case版本控制

  • 使用switch語句時,只要保證有breakcase的順序不影響程序邏輯code

  • 使用IDE時,能夠自動檢查是否漏寫了break語句和default語句,方法是打開IDE的編譯檢查。對象

  • switch表達式blog

    • 新語法使用->,若是有多條語句,須要用{}括起來,不要寫break語句
  • public class Main {
          public static void main(String[] args) {
              String fruit = "apple";
              switch (fruit) {
              case "apple" -> System.out.println("Selected apple");
              case "pear" -> System.out.println("Selected pear");
              case "mango" -> {
                  System.out.println("Selected mango");
                  System.out.println("Good choice!");
              }
              default -> System.out.println("No fruit selected");
              }
          }
      }
    • 新的switch語法,不但不須要break,還能夠直接返回值。
    public class Main {
        public static void main(String[] args) {
            String fruit = "apple";
            int opt = switch (fruit) {
                case "apple" -> 1;
                case "pear", "mango" -> 2;
                default -> 0;
            }; // 注意賦值語句要以;結束
            System.out.println("opt = " + opt);
        }
    }
    • yield
      • 原本新的switch語句返回簡單的值沒有問題,可是若是須要複雜的語句,咱們也能夠寫不少語句,放到{...}裏,而後,用yield返回一個值做爲switch語句的返回值。

while循環

  • while循環是一個死循環,可是,Java的int類型有最大值,達到最大值後,再加1會變成負數,結果,意外退出了while循環。

do while循環

for循環

  • for (初始條件; 循環檢測條件; 循環後更新計數器) {
          // 執行語句
      }
  • 使用for循環時,千萬不要在循環體內修改計數器!字符串

  • 爲了保證變量應該把訪問範圍縮到最小的原則,對於for循環中使用的i最好在循環體內定義。

  • for循環還能夠缺乏初始化語句、循環條件和每次循環更新語句

  • for each循環

  • public class Main {
          public static void main(String[] args) {
              int[] ns = { 1, 4, 9, 16, 25 };
              for (int n : ns) {//注意形式,先定義數組元素n,注意這裏再也不是計數器n,它對應着數組的每個元素,在循環的主語句中能夠直接調用。
                  System.out.println(n);
              }
          }
      }
    • 除了數組外,for each循環可以遍歷全部「可迭代」的數據類型,包括後面會介紹的ListMap

break和continue

  • 不管是while循環仍是for循環,有兩個特別的語句能夠使用,就是break語句和continue語句。
  • break語句老是跳出最近的一層循環。
相關文章
相關標籤/搜索