《java程式設計思想——第十三章(字串)》
阿新 • • 發佈:2018-11-17
字串##
13.1 不可變String##
string物件是不可變。String類中每一個看起來會修改String值得方法,實際上都建立了一個新的String物件。
public class Immutable {; public static String upcase (String s) { return s.toUpperCase(); } public static void main(String[] args) { String q = "howdy"; Print.print(q); String qq = upcase(q); Print.print(qq); Print.print(q); } /**輸出 * howdy * HOWDY * howdy */ }
13.2 過載"+"與StringBuilder##
"+"的底層實現方式也是StringBuilder,後者更加高效。
"+"連線符會生成很多中間物件,需要回收。
13.3 無意識的遞迴##
/** * 無意識遞迴 * @author Administrator * */ public class InfiniteRecursion { public String toString() { return "InfiniteRecursion address:"+this+"\n"; } public static void main(String[] args) { List<InfiniteRecursion> v = new ArrayList<InfiniteRecursion>(); for (int i = 0; i < 10; i++) { v.add(new InfiniteRecursion()); } System.out.println(v); } }
在String後跟"+"時會嘗試把this轉換成String型別,去呼叫this 的toString()方法,於是就發生了遞迴呼叫。
13.4 String上的操作##
在需要改變字串內容時,返回一個新字串;不改變內容時返回原字串的引用。