Java程式設計思想之讀書筆記系列十一 --- 第十三章 --- 字串
阿新 • • 發佈:2019-02-19
- String物件是不可變的,具有隻讀特性
- 預先指定StringBuilder的大小可以避免多次重新分配緩衝(那麼:如果超出預先指定的大小,會出現什麼情況呢?)
- 重寫自定義類的toString()方法的時候,注意避免this的使用,否則會導致無窮的遞迴(正確的方法應該是呼叫super.toString()方法)
- 格式修飾符,在System.out.format當中(比如%d,%f等等)
- System.out.printf()和System.out.format()方法等同
- Formatter的構造器經過過載可以接受多種輸出目的地,比如PrintStream,OutputStream和File
- Formatter.format(%-15.15s %5d %10.2f", name, qty, price):-表示左對齊,預設是右對齊;第一個15表示最小寬度,第二個15表示最大寬度(針對string)或者最多小數點位數(針對浮點數)
- 在Java中,\\的含義是我要插入一個正則表示式的反斜線,所以其後的字元具有特殊的意義。比如,想表示一位數字,那麼應該是\\d;如果想插入一個普通的反斜線,應該是\\\\
- 總之,有特殊含義的就需要用\\進行轉義,比如+號;而-號是不需要轉義的
- Matcher.matches和Matcher.lookingAt方法會改變Matcher本身的狀態,從而影響到後續find方法的行為。例項如下:
-
appendReplacement()和appendTail()方法:
- appendReplacement()
- appendTail()
- Scanner可以接受各種型別的輸入物件(構造器),可以指定定界符(useDelimiter()方法),同時可以使用自定義的正則表示式進行掃描(hasNext(String regex))
- StringTokenizer()方法已經過時,可以利用Scanner和正則表示式進行替換