String源代码
1,數(shù)字可以轉(zhuǎn)換成其他的進(jìn)制的字符串時(shí),能夠使用Integer.toString的靜態(tài)方法。
例子:
int value = 3;//2進(jìn)制String binaryValue = Integer.toString(value, 2);System.out.println("二進(jìn)制的 3:" + binaryValue);int value16 = 31;System.out.println("十六進(jìn)制的23:" + Integer.toString(value16, 16));2 ,subString方法可能會(huì)造成內(nèi)存泄露。比方說(shuō)一個(gè)字符串,長(zhǎng)度為100個(gè)char的字段A。然后subString,截出一個(gè)2個(gè)char的字段B。那么B的字段中的屬性value還是會(huì)使一個(gè)100個(gè)char的數(shù)字。
當(dāng)然,這還會(huì)影響split方法
/*** 演示SubString泄漏內(nèi)存*/@Testpublic void testSubStringLeak(){String subString = this.subString();/*** 在這里設(shè)斷點(diǎn)。可以看到subString中的Value還是10個(gè)Char的數(shù)組* value的值* [a, b, c, d, e, f, g, h, i, g, h, m, n]*/System.out.println(subString);}private String subString(){String origin = "abcdefghighmn";return origin.substring(0, 2);}?
3, 從代碼實(shí)現(xiàn)上來(lái)說(shuō),String的實(shí)現(xiàn)是一個(gè)char的屬性Value,offset是數(shù)組中的起始位置,然后count是數(shù)組中的截取。
4,? replace,subString等的方法,我們希望的結(jié)果是返回值,其調(diào)用方法的對(duì)象,本身并不改變。
/*** replace,或者其他String的方法,并不改變?cè)瓉?lái)的值,* 因?yàn)镾tring是不可變的。處理的往往是返回值。*/@Testpublic void testReplace(){String s = "java";String result = s.replace("j", "l");System.out.println("origin s:"+s);System.out.println("replaced result:"+result);}?
?
?
5,matches(String regex)
replaceFirst(String regex, String replacement)
replaceAll(String regex, String replacement)
replace(CharSequence target, CharSequence replacement)
split(String regex, int limit)
split(String regex)
都是借用java.util.regex 包下面的類來(lái)完成的。
Technorati 標(biāo)簽: JDK Source code轉(zhuǎn)載于:https://www.cnblogs.com/chandlersong/archive/2011/11/19/2255376.html
總結(jié)
 
                            
                        - 上一篇: mcu串口下载原理
- 下一篇: jQuery 时间控件推荐(1)
