筆記整理 來源於《Java核心技術卷 I 》 《Java編程思想》
1. 讀取輸入
Scanner in = new Scanner(System.in);
輸入一行(包含空格)
String str = in.nextLine()
讀取一個單詞(以空白符作為分隔符)
String firstName = in.next();
讀取一個整數
int age = in.nextInt();
讀取一個浮點數
in.nextDouble()
輸入是可見的,Scanner類不適合從控制台讀取密碼,Java 6引入Console實現
Console cons = System.console();
char[] passwd = cons.readPassword(“Password:”);
為了安全起見,返回的密碼存放在一維字符數組中,而不是字符串中。在對密碼進行處理之后,應馬上用一個填充值覆蓋數組元素。
采用console輸入一次只能讀取一行。
java.util.Scanner 5.0
Scanner(InputStream in)
用給定的輸入流創建一個Scanner對象
String nextLine()
讀取輸入的下一行內容
String next()
讀取輸入的下一個單詞(以空格作為分隔符)
int nextInt()
double nextDouble()
讀取並轉換下一個表示整數或浮點數的字符序列
boolean hasNext()
檢測輸入中是否還有其他單詞
boolean hasNextInt()
boolean hasNextDouble()
檢測是否還有表示整數或浮點數的下一個字符序列
java.lang.System 1.0
static Console console() 6
如果有可能進行交互操作,就通過控制台窗口為交互的用戶返回一個Console對象。否則返回null。對於任何一個通過控制台窗口啟動的程序,都可以使用Console對象。否則,其可用性將與使用的系統有關。
java.io.Console 6
static char[] readPassword(String prompt,Object…args)
static String readLine(String prompt,Object…args)
顯示字符串primpt並且讀取用戶輸入,知道輸入行結束。args參數可以用來提供輸入格式。
2. 格式化輸出
System.out.
printf()
每個以%字符開始的格式說明符都用相應的參數替換。格式說明符尾部的轉換符將指示被格式化的數值類型:f表示浮點數,d表示是十進制整數。
用於printf的轉換符:

用於printg的標志

+ 打印正數和負數的符號 +3333.33
空格 在正數之前添加空格 | 3333.33|
System.out.printf(“%,(.2f”) 使用分組的分隔符並將負數括在括號內
可以使用s轉換符格式化任意的對象。對於任意實現了Formattable 接口的對象都將調用formatTo方法;否則將調用toString方法,它可以將對象轉換為字符串。
可以使用靜態的String.format方法創建一個格式化的字符串,而不打印輸出:
String message = String.format(“Hello,%s. Next Year,you’ll be %d”,name,age);
2.1 時間與日期的轉換符

可以采用一個格式化的字符串支出要被格式化的參數索引,索引必須緊跟在%后面,並以$終止,例如:
System.out.printf(“%1$s %2$tB %2$te,%2$tY,”date:”,new Date());
date:February 9, 2004
還可以選擇使用<標志,指示前面格式說明中的參數將被再次使用。
System.out.printf(“%s %tB %<te %<tY”,”date:”,new Date());
參數索引從1開始
3. 文件輸入與輸出
讀取,用File對象構造一個Scanner對象
Scanner in = new Scanner(Paths.get(“myfile.txt”));
如果文件名中包含反斜杠符號,就要記住在每個反斜杠之前再加一個額外的反斜杠:“c:\\mydirectory\\myfile.txt”
然后就可以使用任何一個Scanner方法對文件進行讀取
寫入 需要構造PrintWriter對象。在構造器中,只需要提供文件名
PrintWriter out = new PrintWriter(“myfile.txt”);
如果文件不存在,創建該文件。可以像System.out一樣使用print,println,printf
如果用一個不存在的文件構造一個Scanner,或者用一個不能被創建的文件名構造一個PrintWriter,那么會發生異常。
Public static void main(String[] args)
throw FileNotFoundException
{
Scanner in = new Scanner(Paths.get(“myfile.txt”));
…
}
文件末尾寫入
FileWriter writer = new FileWriter("myfile.txt", true);
writer.write("信息");
換行 writer.write(dates+"\r\n");
java.util.Scanner 5.0
Scanner(File f)
構造一個從給定文件讀取數據的Scanner
Scanner(String data)
構造一個從給定字符串讀取數據的Scanner
java.io.PointWriter 1.1
PrintWriter(String filename)
構造一個將數據寫入文件的PrintWriter.
java.nio.file.Paths 7
static Path get(String pathname)
根據給定的路徑名構造一個Path