Java字串處理知識點
1、字串比較 ==比較字串是否引用同一地址,如果比較的字串是同一個物件,則可以用==,如果不是同一物件,只是比較內容,則不可以用==。Char的比較用==,不用equals,string的比較用equals,不用==。
定義的字串是物件,用==比較是比較的字串的記憶體地址是否相同,也就是說看是否是同一個物件,使用new建立的是新的物件,即使內容一樣,記憶體地址也會不同。
2、字串格式化 字串格式化indexOf()的用法中查詢數的方法,怎麼查的,格式器的建構函式的用法是什麼,會不會影響indexOf()的查數,如DecimalFormat(“#0.###”)。判斷數字中存在小數點之後,查詢的小數點的索引位置和小數位的值是否是0有關?
答:字串格式化indexOf()查數方法由左往右開始查,格式器的用法是格式化字串時指定想要得到的字串的格式,不會影響indexOf()的查數,小數點的索引位置和是否是0無關,不過需注意在預設格式下數字格式化字串之後的每三位由“,”隔開,並且“,”算在字串裡面。可規定字串格式為##.###。
方法若有返回值則每個(if)分支後都要有一個return,雖然if後不是必須要有的,主支一定要有return,返回值並不等於輸出值。方法遇到返回值說明本次呼叫結束。
如果變數不止在if分支裡面使用的話,初始化要放在if前面。
數字轉換大寫時,整數部分需進行字串反轉,小數部分不需要,只需改變追加單位和數字的順序即可。
輸入數字有誤導致與接收型別不匹配,丟擲異常,在不知道確切異常的情況下並且保證不混淆的情況下直接catch Exception即可。
3、獲取貨幣格式物件,實現格式化的程式碼:NumberFormat nf = NumberFormat.getCurrencyInstance(Locale.CHINA);
4、StringBuffer(字串緩衝)是字串變數,有append()方法和insert()方法,String是字串常量,沒有append()和insert()方法,兩種形式均可輸出。不過由於大多數類中關於顯示的方法的引數多為String類的物件,所以經常要將StringBuffer類的物件轉換為String類的物件,再將它的值顯示出來。
5、當前日期值字串格式化:Stringformat處前面都要加上%t,b是月份英文縮寫,B是月份英文全寫,a,A是星期值,Y是4位年份值,y是2位年份值,m是月份值,d是日期值,R是小時分鐘值,T是clock全值,D是月日時值,F是年月日值,c是當前時間全值。
6、Apache提供的lang包有NumberUtils類,提供isNumber()方法,判斷字串是否是數字,不過在eclipse中需要專門匯入此包。
7、ASCII編碼檢視器 字元陣列轉換為字串輸出,不可用toString()方法,要用new String(字元陣列)。Scanner掃描器定義一個物件時可連續使用,但不可在其它分支語句中繼續使用,錯誤是未初始化分支裡的scan,要使用先建立一個新的scan掃描器物件。字元陣列使用toString()方法得到的是this method returns a stringequal to the value of:
getClass().getName() + '@' +Integer.toHexString(hashCode())
toString()方法在很多包裡的類中都有,但不同類中的toString()方法功能不同,不可一概而論。Integer呼叫toString()方法也是這個值,要重寫該方法讓其返回字串值才能真正返回需要的字串。
8、Java中Pattern類提供的靜態方法matches()可以進行正則表示式的匹配,有兩個引數,第一個是正則表示式字串,第二個是被匹配的字元序列,如果字元序列與正則表示式相匹配則返回true,否則返回false。
-----------------------------------------------------------------------------------------------------------------------------------------------------
2017年8月10日
9、關於字串的定義方法:String str1="this is a string!"; String str2=new String("I'm String!");通常對字串的宣告定義用前一種方法;後一種方法的意思是複製引數字串到一個新的字串物件裡,如非必要不要使用因為字串物件是不可變的,其API原始碼是:
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
這種方法常用來作字串轉碼使用,如:String string=new String(original.getBytes("GBK"), "UTF-8");將GBK編碼轉為UTF-8編碼。
在Servlet中的doGet()方法中使用String name=new String(request.getParameter("name").getBytes("ISO8859-1"), "UTF-8");報空指標錯誤,改為String name=request.getParameter("name");就可以了,又經測試發現程式碼中有這一句String name=new String(request.getParameter("name").getBytes("ISO8859-1"),
"UTF-8");時,Run on Server編譯不通過,先不寫這句程式碼,先Run on Server後加這一句儲存,在瀏覽器中測試發現可以正常轉碼使用,很奇怪,存疑。前一種方法是建立字串,後一種是複製字串。