一、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操作
一、字符串優(yōu)化處理
最后編輯于 :
?著作權(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ù)。
【社區(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)容
- 前言 最先接觸編程的知識(shí)是在大學(xué)里面,大學(xué)里面學(xué)了一些基礎(chǔ)的知識(shí),c語(yǔ)言,java語(yǔ)言,單片機(jī)的匯編語(yǔ)言等;大學(xué)畢...
- 一、字符串操作 strcpy(p, p1) 復(fù)制字符串 strncpy(p, p1, n) 復(fù)制指定長(zhǎng)度字符串 s...
- 這段時(shí)間在讀《java程序性能優(yōu)化》,看到里面有一些關(guān)于Java的一些數(shù)據(jù)結(jié)構(gòu)相關(guān)的內(nèi)容,主要涉及到String字...
- String 的聲明 由 JDK 中關(guān)于String的聲明可以知道: 不同字符串可能共享同一個(gè)底層char數(shù)組,例...