StringBuffer 和String的區別,以及二者之間的轉換(重要)
阿新 • • 發佈:2018-11-05
在編寫驗證碼的時候,用到 session.setAttribute("piccode",stringBuffer);後面要拿出來,要變成string型別。
要用String piccode = request.getSession().getAttribute("piccode").toString();而不能用(string)強制型別轉化。
1. String 是內容不可以變化的,stringbuffer和stringbuilder是內容可以變化的。
2.stringbuffer是同步的,執行緒安全的,但是正是同步的,故效率低。
stringbuilder是非同步的,資料不安全,但是效率高。
string和stringbuffer的轉化
這裡不可以使用(string)這樣的強制型別轉化。
這裡可以使用stringbuffer自帶的.toString()方法來轉化二者。
ps:(string)和valueOf()和.toString()的區別
第一種:用(string)來:
這是標準型別的轉化,但是要注意的是型別要可以轉化成string 型別,如果不能,就會報錯。
另外,如果是object的話,轉化可能會出現不可欲知的錯誤,而且也不會報錯。
Object obj = new Integer(100); String strVal = (String)obj;
這樣其實是錯誤的,但是不會報錯。
第二種:用.toStringj()來:
採用這種方法要注意,object必須不能是null的,否則會丟擲空指標異常。
第三種:valueof()的方法來
使用這種方法其實就是和.toString()方法一樣,唯一不一樣是,他會進行是否為空的判斷。如果為空,會返回一個字串型別的null。