一、字符串優(yōu)化處理

一、String對(duì)象及其特點(diǎn)
核心組成:字符數(shù)組 char[] 、offset偏移量 、count長(zhǎng)度
特點(diǎn):1. 不可變性 2.針對(duì)常量池的優(yōu)化 3.類的final定義
二、subString引起的內(nèi)存溢出
1.subString 在jdk7版本以下存在,解決方案x = new String(x.substring(x, y));這樣的話,就會(huì)創(chuàng)建一個(gè)新數(shù)組,切斷與原來(lái)的數(shù)組的引用,既然JDK6中存在這樣一個(gè)雞肋,SUN工程師們肯定會(huì)解決的,在JDK7中,該雞肋已經(jīng)得到解決。在JDK7中調(diào)用substring時(shí),會(huì)自動(dòng)創(chuàng)建一個(gè)字符數(shù)組,新字符串指向新字符數(shù)組,則原來(lái)數(shù)組可以被GC處理。
this.value = Arrays.copyOfRange(value, offset, offset + count);
三、字符分隔與查找
split---->StringTokenizer----->indexOf 性能遞增
charAt 也是高效的
四、String和StringBuffer、StringBuilder
String對(duì)象是不可變對(duì)象,需要字符操作的地方都是新建對(duì)象,一來(lái)會(huì)增加新對(duì)象數(shù),增大占用內(nèi)存;二來(lái)會(huì)降低效率;
注意:1. + :new是新建String對(duì)象操作 2.String類的方法都是新建String對(duì)象操作
效率低下,為了提升效率使用StringBuilder和StringBuffer類。
小結(jié):
(1)如果要操作少量的數(shù)據(jù)用 String;
(2)多線程操作字符串緩沖區(qū)下操作大量數(shù)據(jù) StringBuffer,因?yàn)榉椒ǘ际莝ynchronized同步方法
(3)單線程操作字符串緩沖區(qū)下操作大量數(shù)據(jù) StringBuilder(推薦使用),因?yàn)槭冀K是一個(gè)對(duì)象,本質(zhì)上是native 的數(shù)組arrayCopy操作

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容