StringBuffer和StringBuilder添加null值的誤導
讓我們來看看這段代碼:

















結(jié)果是什么呢?



讓我們來看看append方法的源碼就知道了.
StringBuilder:












StringBuffer的append方法是在它的父類中實現(xiàn)的:












這兩個append方法都有共同的:


null了.
而"null"這個字符串的長度自然是4了.
我的漫漫程序之旅專注于JavaWeb開發(fā)
隨筆 - 39, 文章 - 310, 評論 - 411, 引用 - 0
|
StringBuffer和StringBuilder添加null值的誤導讓我們來看看這段代碼: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 結(jié)果是什么呢? ![]() ![]() ![]() 讓我們來看看append方法的源碼就知道了. StringBuilder: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() StringBuffer的append方法是在它的父類中實現(xiàn)的: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 這兩個append方法都有共同的: ![]() ![]() null了. 而"null"這個字符串的長度自然是4了. 評論# re: StringBuffer和StringBuilder添加null值的誤導[未登錄] 回復 更多評論個人覺得這個結(jié)果沒什么誤導的
2008-05-11 20:46 | Jarod
# re: StringBuffer和StringBuilder添加null值的誤導 回復 更多評論這個正常第一沒有人有意會往其中 append 一個 null 第二程序執(zhí)行中 append 一個 null,顯示出來是個 null 不正好讓我們能知道中間發(fā)生了什么事嗎? 就像 String s = null; System.out.println(s); 輸出 null 一樣。
2008-05-11 20:57 | 隔葉黃鶯
# re: StringBuffer和StringBuilder添加null值的誤導 回復 更多評論個人認為throw nullpointexception更為合理,一般來說null是沒有任何意義的。
2008-05-11 22:40 | 三人行,必有我?guī)熝?/a>
# re: StringBuffer和StringBuilder添加null值的誤導 回復 更多評論哈哈,這么實現(xiàn)也是沒辦法的事。樓主可以想象,如果是你實現(xiàn)append方法,你會怎么做呢。append(null) 會將null做如何處理呢?我想大多數(shù)人可能都會給出三種處理方案: 1. 直接返回null。一般來講,append方法都是返回一個StringBuilder對象,所以返回null,有些不符合append的設(shè)計思想。 2. 什么都不做,返回原來的StringBuilder對象。這么做似乎合理,但是往StringBuilder里放null,總得和往里放空串有點區(qū)別吧。所謂人過留名,雁過留聲。所以這種看似合理的方法卻不太好。 3. 這種方案就是現(xiàn)在append方法的實現(xiàn)方案了,將null變成"null"。 因此,將null變成"null"是最佳的方案。
2008-05-11 22:43 | 銀河使者
|
||||||||||||||||||||||||||||||||||||||