字符串:String,StringBuilder,StringBuffer
String: 底層是char[],長(zhǎng)度不可變(追加字符時(shí),會(huì)重新開辟空間存儲(chǔ)),實(shí)現(xiàn)了Comparable接口
創(chuàng)建原理:
1. 無論以何種方式創(chuàng)建String字符串,jvm首先會(huì)去查找String字符串緩存池是否存在相同的內(nèi)容
2. 使用new創(chuàng)建對(duì)象或包含變量的表達(dá)式創(chuàng)建String對(duì)象(除被final修飾的變量)時(shí),都會(huì)在堆或棧區(qū)開辟空間。(運(yùn)行期)
3. 使用直接指定或者使用純字符串串聯(lián)來創(chuàng)建String對(duì)象,無論String緩沖池是否存在相同內(nèi)容,都不會(huì)在堆棧區(qū)開辟空間。
equal方法:重寫父類Object的equal方法,僅比較字符串的內(nèi)容是否相同,不比較地址。
intern方法:在運(yùn)行期動(dòng)態(tài)的在方法區(qū)創(chuàng)建對(duì)象,先去String池中去找是否有相同內(nèi)容的,如果有直接引用,否則再池中新增.
spilt方法: 分割字符串,如果字符串中沒有指定的分隔符,則返回String[]{原字符串}
StringBuilder/StringBuffer: 默認(rèn)分配16個(gè)字符長(zhǎng)度,長(zhǎng)度可變,繼承AbstractStringBuilder類。
StringBuilder:異步,效率高
StringBuffer:同步線程安全
三者比較:三者均被final修飾不可被繼承,StringBuilder 效率高,耗時(shí)最短
效率:StringBuilder > StringBuffer > String
字符串處理類:StringTokenizer 字符串分隔解析:
默認(rèn)分隔符:“空格”,“制表符(‘\t’)”,“換行符(‘\n’)”,“回車符(‘\r’)”。
常見方法:
nextToken():返回當(dāng)前位置到下一個(gè)分隔符之前的字符串。
countTokens():分隔符總量
Math:數(shù)字工具類
產(chǎn)生隨機(jī)數(shù):Math.random()[0,1)之間的隨機(jī)數(shù)
Random:專業(yè)生產(chǎn)隨機(jī)數(shù)
new Random(可指定隨機(jī)數(shù)范圍).nextXxx(可指定隨機(jī)數(shù)范圍)