文章分類

顯示具有 J2SE 標籤的文章。 顯示所有文章
顯示具有 J2SE 標籤的文章。 顯示所有文章

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]。

2011年9月16日 星期五

[應用]用NumberFormat來將數字格式化技巧

下面是NumberFormat的一些範例
更詳細的話參考Java API會比較完整

 NumberFormat formatter = new DecimalFormat("000000");
    String s = formatter.format(-1234.567);  // -001235

    formatter = new DecimalFormat("##");
    s = formatter.format(-1234.567);         // -1235
    s = formatter.format(0);                 // 0
    formatter = new DecimalFormat("##00");
    s = formatter.format(0);                 // 00
   
    formatter = new DecimalFormat(".00");
    s = formatter.format(-.567);             // -.57
    formatter = new DecimalFormat("0.00");
    s = formatter.format(-.567);             // -0.57
    formatter = new DecimalFormat("#.#");
    s = formatter.format(-1234.567);         // -1234.6
    formatter = new DecimalFormat("#.######");
    s = formatter.format(-1234.567);         // -1234.567
    formatter = new DecimalFormat(".######");
    s = formatter.format(-1234.567);         // -1234.567
    formatter = new DecimalFormat("#.000000");
    s = formatter.format(-1234.567);         // -1234.567000
   
    formatter = new DecimalFormat("#,###,###");
    s = formatter.format(-1234.567);         // -1,235
    s = formatter.format(-1234567.890);      // -1,234,568
   
    formatter = new DecimalFormat("#;(#)");
    s = formatter.format(-1234.567);         // (1235)
   
    formatter = new DecimalFormat("'#'#");
    s = formatter.format(-1234.567);         // -#1235
    formatter = new DecimalFormat("'abc'#");
    s = formatter.format(-1234.567);         // -abc1235