Java基礎(chǔ)——String

Java基礎(chǔ)之字符串

Java字符串是最常用的引用數(shù)據(jù)類型之一,那么對(duì)于一些小的細(xì)節(jié)可能很多朋友不夠特別了解,這一期我們就聊聊字符串谋币。

final

介紹String這個(gè)類之前需要先說(shuō)一下final這個(gè)關(guān)鍵字艘虎,在Java中final這個(gè)關(guān)鍵字起到一個(gè)非常重要的作用。

final可以修飾的目標(biāo)

final可以修飾類

final可以修飾變量

final可以修飾方法

final類

final修飾的類是不存在子類的悠垛,所以final形容的類是實(shí)現(xiàn)最完善的類(如果不完善线定,那么就不會(huì)被使用,這個(gè)類也就沒(méi)有意義了)确买。

final變量

final修飾的變量一般用于常量的定義上斤讥,因?yàn)橐坏┒x就無(wú)法改變了(基礎(chǔ)數(shù)據(jù)類型的話,無(wú)法改變的是值湾趾;引用數(shù)據(jù)類型的話芭商,無(wú)法改變的是引用)派草。

PS:本質(zhì)上基礎(chǔ)數(shù)據(jù)類型跟引用數(shù)據(jù)類型在內(nèi)存中的都是值,只不過(guò)這個(gè)值對(duì)于用戶的含義不同铛楣,一個(gè)存儲(chǔ)的就是值本身近迁,一個(gè)存儲(chǔ)的值是引用地址。

上圖可以看出final是不可以被修改的簸州。

如果是引用數(shù)據(jù)類型會(huì)是什么樣的呢鉴竭?

上圖可以看出常量可以在靜態(tài)代碼塊中初始化,但是不允許修改引用岸浑,不過(guò)引用的對(duì)象中的屬性是可以隨意修改的搏存。

final方法

final修飾的方法是不可以被重寫(xiě)的,該類方法的優(yōu)勢(shì)在于編譯器在編譯期就靜態(tài)綁定助琐,那么在使用上會(huì)快于動(dòng)態(tài)方法祭埂。

String

簡(jiǎn)介

String是一個(gè)final的類,根據(jù)上面的final介紹可以知道String被final修飾后的特性了兵钮。

String的很多方法在使用的時(shí)候蛆橡,會(huì)忽略的一點(diǎn)即使我們通過(guò)字符串對(duì)象調(diào)用了修改字符串的方法,但是該字符串本身是不會(huì)改變的掘譬。那么為什么不會(huì)修改本身呢泰演?

上圖可知字符串是通過(guò)一個(gè)final修飾的char的數(shù)組,所以字符串對(duì)象本身是不會(huì)修改的葱轩。

輸出結(jié)果

所以只要是對(duì)字符串本身做處理睦焕,都需要將方法的返回值保存到臨時(shí)變量中使用。

常用的連接方法

加號(hào)(+)連接

反編譯執(zhí)行過(guò)程靴拱,如下圖

上圖可知垃喊,字符串連接過(guò)程已經(jīng)被優(yōu)化成了StringBuilder的追加方式了。

再看一個(gè)例子

如圖可知append時(shí)間上的花費(fèi)是最少的袜炕。為什么呢本谜?

如圖可知,append方法是最快的偎窘,concat次之乌助,最差的就是+的方式,為什么呢陌知?仔細(xì)觀察不難看出他托,+的連接方式會(huì)在每次循環(huán)中創(chuàng)建一個(gè)StringBuilder對(duì)象,這樣會(huì)消耗非常多的資源仆葡。所以建議直接使用StringBuilder來(lái)構(gòu)建會(huì)變化的String(StringBuffer這個(gè)類基本上已經(jīng)被淘汰了赏参,因?yàn)樽址芳踊旧鲜遣恍枰€程同步的,所以一般不會(huì)使用這個(gè)類來(lái)拼接字符串)。

intern方法

intern方法調(diào)用會(huì)先去字符串常量池中查找相應(yīng)的字符串登刺,如果字符串不存在籽腕,就會(huì)在字符串常量池中創(chuàng)建該字符串然后再返回

基于JDK1.6

基于JDK1.8

可以看出其中的差別,涉及到了JVM相關(guān)的知識(shí)(處理字符串常量池不存在的字符串是怎樣的過(guò)程)

JDK1.6——intern方法會(huì)把首次出現(xiàn)的字符串復(fù)制到常量池中纸俭,并返回常量池中的引用皇耗。

JDK1.8——intern方法會(huì)把首次出現(xiàn)的字符串引用地址復(fù)制到常量池中,并返回該引用揍很。

總結(jié)

final的關(guān)鍵字在不長(zhǎng)改動(dòng)的代碼中嘗試使用以達(dá)到優(yōu)化系統(tǒng)性能的作用

字符串的拼接使用StringBuilder來(lái)完成

使用字符串修改的方法郎楼,一定要保存返回值

如果對(duì)字符串進(jìn)行判斷是否是同一個(gè)引用的時(shí)候,尤其是使用intern這種native方法的時(shí)候窒悔,一定要考慮JDK版本的差別呜袁。

面試題

final的作用

字符串+與append的區(qū)別

intern方法實(shí)現(xiàn)了什么樣的功能

IT技能學(xué)習(xí)請(qǐng)關(guān)注http://www.zparkedu.com/

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市简珠,隨后出現(xiàn)的幾起案子阶界,更是在濱河造成了極大的恐慌,老刑警劉巖聋庵,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件膘融,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡祭玉,警方通過(guò)查閱死者的電腦和手機(jī)氧映,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)脱货,“玉大人岛都,你說(shuō)我怎么就攤上這事≌窬” “怎么了臼疫?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)扣孟。 經(jīng)常有香客問(wèn)我多矮,道長(zhǎng),這世上最難降的妖魔是什么哈打? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮讯壶,結(jié)果婚禮上料仗,老公的妹妹穿的比我還像新娘。我一直安慰自己伏蚊,他們只是感情好立轧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般氛改。 火紅的嫁衣襯著肌膚如雪帐萎。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,274評(píng)論 1 300
  • 那天胜卤,我揣著相機(jī)與錄音疆导,去河邊找鬼。 笑死葛躏,一個(gè)胖子當(dāng)著我的面吹牛澈段,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播舰攒,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼败富,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了摩窃?” 一聲冷哼從身側(cè)響起兽叮,我...
    開(kāi)封第一講書(shū)人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎猾愿,沒(méi)想到半個(gè)月后鹦聪,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匪蟀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年椎麦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片材彪。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡观挎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出段化,到底是詐尸還是另有隱情嘁捷,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布显熏,位于F島的核電站雄嚣,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏喘蟆。R本人自食惡果不足惜缓升,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蕴轨。 院中可真熱鬧港谊,春花似錦、人聲如沸橙弱。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至斜筐,卻和暖如春龙致,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背顷链。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工目代, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蕴潦。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓像啼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親潭苞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子忽冻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容