1.不可變的String
tips:對于一個方法而言,參數(shù)是為了該方法提供信息的,而不是想讓該方法改變自己的。


jdk源碼中,都是返回一個新的對象,而不是原來的對象。傳遞的是引用的一個拷貝,引用指向的對象沒有改變。
2.重載“+”和StringBuilder
重載操作符:Java中不允許程序員重載操作符,c++中允許。Java中,用于String類型的“+”和“+=”是僅有的重載操作符。什么叫做重載操作符?用在特定類上,賦予不同含義的操作符。

在Java編譯器中(編譯器可以優(yōu)化代碼),使用了StringBuilder來優(yōu)化代碼,所以StringBuilder效率比String高。StringBuffer,Java SE5以前的,線程安全的,開銷大。tips:如果要在toString()中中使用循環(huán),最好自己創(chuàng)建一個StringBuilder對象,不然編譯器會在循環(huán)內(nèi)部重復(fù)創(chuàng)建StringBuilder對象。
3.無意識的遞歸
在toString()方法中調(diào)用return “something”+this;會循環(huán)調(diào)用toString()方法,注意使用super.toString()。
4.String上的操作
當(dāng)需要改變字符串時,返回一個新對象,如果沒有改變時,返回指向原對象的引用。
5.格式化輸出
1.format 2.Formatter類,%s表示插入的是String類型的。轉(zhuǎn)換成boolean類型是,和其他語言有區(qū)別。3.String.format()?
6.正則
Scanner類:在結(jié)束的時候回拋出IOException異常,不需要顯式拋出異常。
StringTokenizer類:在String支持正則、Scanner類之前。目前基本不在用。