文章分類

2011年10月5日 星期三

[J2SE]String的應用 - valueOf



從資料庫做查詢,有時一筆資料會包裝成一Map<String,Object>物件。

此時若要把其中一個欄位的資料傳回前端,便要把Object轉型為String

return map.get( "empno" ).toString( );

但map.get( "empno" )很有可能是null,很有可能會出現NullPointException,

一般來說會再寫個if else來判斷。
if( map.get( "empno" )!=null  ){
    return map.get( "empno" ).toString( );
} else {
    return null;
}



前兩天得知String裡面其實已經有寫好這個判斷了,那就是String.valueOf( )方法

public static String valueOf(Object obj)
返回 Object 參數的字元串表示形式。

參數:
obj - 一個 Object
返回:
如果參數為 null,則字元串等於 "null";否則,返回 obj.toString() 的值。
只要return String.valueOf( map.get( "empno" ) );   一行搞定。

之後遇到這樣的情形,就用這個方法吧!!





[J2SE]StringBuffer與StringBuilder



StringBuffer,應用在同步 (synchronization) 或多重執行緒的情況,是thread-safe的。
主要的功用在於進行多個字串的新增、連接、修改、插入、刪除時,
會比String來的節省資源、有效率。其包含了一個用來做字串初始化的"緩衝區"(buffer),
預設有16個字元的長度,這個字串緩衝區可以當下做一些管理,而不需要在修改字串時,
像 String 物件一樣得重新建立新的字串。


StringBuilder,與StringBuffer不同之處是沒有thread-safe,應用於單一執行緒的環境下,
會比StringBuffer更有效率些。


無論StringBuilder或是StringBuffer的緩衝區都有容量上的限制,
不過程式員無需手動去控制 buffer array,如果內部將產生 buffer overflow時,
它們都會自動加大容量 [4]。