更新時(shí)間:2019-09-05 10:07:58 來源:動(dòng)力節(jié)點(diǎn) 瀏覽3006次
今天動(dòng)力節(jié)點(diǎn)培訓(xùn)機(jī)構(gòu)小編為大家介紹“java中string創(chuàng)建對(duì)象的方式有哪幾種”,希望大家看完此文,能夠熟悉string創(chuàng)建對(duì)象的方式,下面就隨小編一起看看java中string創(chuàng)建對(duì)象的方式分別是哪些。
Java中String是一個(gè)特殊的包裝類數(shù)據(jù)有兩種創(chuàng)建方式:
String s = "abc";
String s = new String("abc");
第一種先在棧中創(chuàng)建一個(gè)對(duì)String類的對(duì)象引用變量s,然后去查找"abc"是否被保存在字符串常量池中,如果沒有則在棧中創(chuàng)建三個(gè)char型的值'a'、'b'、'c',然后在堆中創(chuàng)建一個(gè)String對(duì)象object,它的值是剛才在棧中創(chuàng)建的三個(gè)char型值組成的數(shù)組{'a'、'b'、'c'},接著這個(gè)String對(duì)象object被存放進(jìn)字符串常量池,最后將s指向這個(gè)對(duì)象的地址,如果"abc"已經(jīng)被保存在字符串常量池中,則在字符串常量池中找到值為"abc"的對(duì)象object,然后將s指向這個(gè)對(duì)象的地址。
第一種特點(diǎn):JVM會(huì)自動(dòng)根據(jù)棧中數(shù)據(jù)的實(shí)際情況來決定是否有必要?jiǎng)?chuàng)建新對(duì)象。
第二種可以分解成兩步:
1、String object = "abc";
2、String s = new String(object);
第一步參考第一種創(chuàng)建方式,而第二步由于"abc"已經(jīng)被創(chuàng)建并保存到字符串常量池中,因此jvm只會(huì)在堆中新創(chuàng)建一個(gè)String對(duì)象,它的值共享?xiàng)V幸延械娜齻€(gè)char型值。
第二種特點(diǎn):一概在堆中創(chuàng)建新對(duì)象,而不管其字符串值是否相等,是否有必要?jiǎng)?chuàng)建新對(duì)象。
在講字符串比較前,必須要了解==和equals的區(qū)別:
因?yàn)閖ava所有類都繼承于Object基類,而Object中equals用==來實(shí)現(xiàn),所以equals和==是一樣的,都是比較對(duì)象地址,java api里的類大部分都重寫了equals方法,包括基本數(shù)據(jù)類型的封裝類、String類等。對(duì)于String類==用于比較兩個(gè)String對(duì)象的地址,equals則用于比較兩個(gè)String對(duì)象的內(nèi)容(值)。
以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)小編介紹的“java中string創(chuàng)建對(duì)象的方式分別是哪些”的內(nèi)容,希望對(duì)大家有幫助,更多java資訊最新內(nèi)容請(qǐng)繼續(xù)關(guān)注動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)官網(wǎng),每天會(huì)有精彩內(nèi)容分享與你。
相關(guān)免費(fèi)視頻教程推薦
Javase基礎(chǔ)教程視頻下載——String對(duì)象的創(chuàng)建:http://www.ilovecolors.com.cn/xiazai/2526.html
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743