天天看點

java知識點--基礎篇(4)

輸入輸出和控制流程

1、輸入輸出

   1.1 控制台的輸入:通過控制台輸入,需要構造一個Scanner對象,并與标準輸入流System.in關聯。

       如:Scanner in = new Scanner(System.in);

   1.2 可以使用Scanner的nextLine讀取一行資料,用next讀取一個字元串,用nextInt讀取一個整數等

   1.3 Scanner不适用從可控制台讀取密碼,java SE  6特别引入了Console類實作這個目的。

     如:  Console con = System.console();

            char[] password = con.readPassword("password: "); //安全起見,将密碼放到字元數組中,而不是字元串;處理後應該對馬上用填充值覆寫數組元素。不過不如scanner友善,每次隻能讀一行資料,而不是一個數值或單詞。

  1.4 格式化輸出:java SE5.0 沿用了c語言庫函數中的printf方法。

    如:System.out.printf("a is %d, b is %s", age, name);

  1.5 後面跟的參數索引是從1開始,象上例中的age的索引為1,name的索引為2;而且可以使用<标志來使用前一個參數将被使用

     如: System.out.printf("%1$s %2$tB  %2$te %2$tY", "Due date:", new Date());

               System.out.printf("%s %tB  %<te %<tY", "Due date:", new Date());

               輸出為:Due date: February 9 2004

  1.6 可以使用靜态的String.format方法建立一個格式化字元串

    如: String message = String.format(("a is %d, b is %s", age, name);

  1.7 檔案輸入與輸出

      1.7.1 對于檔案進行讀取,就需要一個用File對象構造一個Scanner對象

           如:Sanner in = new Scanner(new File("myfile.txt"));

           ★可以構造一個字元串的Scanner,但是此時将字元串解釋為資料,而不是檔案名。

     1.7.2 對檔案寫入,就需要構造一個PrintWriter對象,隻需要提供檔案名。

           如:PrinterWriter out = new PrinterWriter("myfile.txt");

      ★如果用一個不存在的檔案構造Scanner或用一個不能建立的檔案構造PrinterWriter對象,則會跑出一個異常。

2、控制流程

     2.1 塊作用域:由花括号括起來的若幹條簡單的java語句。它确定了變量的作用域;一個塊可以嵌套在另一個塊中。而且不能在嵌套的兩個塊中聲明同一個變量,這個c++是不同的。

    2.2 使用條件語句、循環語句等,可以使用塊将原本放一條語句的地方放多條語句。

    2.3 使用循環,檢測兩個浮點數是否相等格外小心。

      如:for(double x = 0; x != 10; x += 0.1) //該循環将為死循環,因為0.1無法精确地用二進制表示。

   2.4 如果在for語句内部定義一個變量,則在循環外部無法使用。

      如:for(int i = 0; i < 10; i++){} // i無法在外部使用,如使用需要在循環外定義