更新時(shí)間:2019-09-05 10:07:58 來源:動(dòng)力節(jié)點(diǎn) 瀏覽3373次
今天動(dòng)力節(jié)點(diǎn)培訓(xùn)機(jī)構(gòu)小編為大家介紹“java中string創(chuàng)建對象的方式有哪幾種”,希望大家看完此文,能夠熟悉string創(chuàng)建對象的方式,下面就隨小編一起看看java中string創(chuàng)建對象的方式分別是哪些。

Java中String是一個(gè)特殊的包裝類數(shù)據(jù)有兩種創(chuàng)建方式:
String s = "abc";
String s = new String("abc");
第一種先在棧中創(chuàng)建一個(gè)對String類的對象引用變量s,然后去查找"abc"是否被保存在字符串常量池中,如果沒有則在棧中創(chuàng)建三個(gè)char型的值'a'、'b'、'c',然后在堆中創(chuàng)建一個(gè)String對象object,它的值是剛才在棧中創(chuàng)建的三個(gè)char型值組成的數(shù)組{'a'、'b'、'c'},接著這個(gè)String對象object被存放進(jìn)字符串常量池,最后將s指向這個(gè)對象的地址,如果"abc"已經(jīng)被保存在字符串常量池中,則在字符串常量池中找到值為"abc"的對象object,然后將s指向這個(gè)對象的地址。
第一種特點(diǎn):JVM會自動(dòng)根據(jù)棧中數(shù)據(jù)的實(shí)際情況來決定是否有必要?jiǎng)?chuàng)建新對象。
第二種可以分解成兩步:
1、String object = "abc";
2、String s = new String(object);
第一步參考第一種創(chuàng)建方式,而第二步由于"abc"已經(jīng)被創(chuàng)建并保存到字符串常量池中,因此jvm只會在堆中新創(chuàng)建一個(gè)String對象,它的值共享?xiàng)V幸延械娜齻€(gè)char型值。
第二種特點(diǎn):一概在堆中創(chuàng)建新對象,而不管其字符串值是否相等,是否有必要?jiǎng)?chuàng)建新對象。
在講字符串比較前,必須要了解==和equals的區(qū)別:
因?yàn)閖ava所有類都繼承于Object基類,而Object中equals用==來實(shí)現(xiàn),所以equals和==是一樣的,都是比較對象地址,java api里的類大部分都重寫了equals方法,包括基本數(shù)據(jù)類型的封裝類、String類等。對于String類==用于比較兩個(gè)String對象的地址,equals則用于比較兩個(gè)String對象的內(nèi)容(值)。

以上就是動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)小編介紹的“java中string創(chuàng)建對象的方式分別是哪些”的內(nèi)容,希望對大家有幫助,更多java資訊最新內(nèi)容請繼續(xù)關(guān)注動(dòng)力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)官網(wǎng),每天會有精彩內(nèi)容分享與你。
相關(guān)免費(fèi)視頻教程推薦
Javase基礎(chǔ)教程視頻下載——String對象的創(chuàng)建:http://www.soulsinkind.com/xiazai/2526.html
相關(guān)閱讀

初級 202925

初級 203221

初級 202629

初級 203743