定義數(shù)組java 創(chuàng)建String的兩種方式有什么區(qū)別?
創(chuàng)建String的兩種方式有什么區(qū)別?一般來說,創(chuàng)建字符串對(duì)象有兩種方法:一種是new type:string s=new string(“ABC”);另一種是雙引號(hào)類型:string s=“ABC”
創(chuàng)建String的兩種方式有什么區(qū)別?
一般來說,創(chuàng)建字符串對(duì)象有兩種方法:一種是new type:string s=new string(“ABC”);另一種是雙引號(hào)類型:string s=“ABC”)。這兩種方法有什么區(qū)別?
A:這兩種方法在內(nèi)存中生成具有不同訪問機(jī)制的字符串對(duì)象。
Java為字符串類型提供了緩沖池機(jī)制。當(dāng)使用雙引號(hào)定義對(duì)象時(shí),Java環(huán)境首先轉(zhuǎn)到字符串緩沖池以查找具有相同內(nèi)容的字符串。如果存在,則直接應(yīng)用。如果它們不存在,則將創(chuàng)建一個(gè)新字符串并將其放置在緩沖池中。示例代碼如下:
string a=“Tom”
string B=“Tom”
在上訴代碼中,變量a和B在緩沖區(qū)中使用相同的存儲(chǔ)對(duì)象。
使用字符串構(gòu)造方法定義對(duì)象時(shí),Java環(huán)境將在每次調(diào)用時(shí)創(chuàng)建一個(gè)新對(duì)象,就像創(chuàng)建其他類型的對(duì)象一樣。示例代碼如下:
string a=new string(“Tom”)
string B=new string(“Tom”)
在上述代碼中,變量a和B使用兩個(gè)不同的存儲(chǔ)對(duì)象,但對(duì)象的內(nèi)容相同。
運(yùn)行結(jié)果如下:
結(jié)論:string s=new string(“ABC”)和string s=“ABC”都可以定義string類型的對(duì)象,但需要注意它們之間的區(qū)別。一般情況下,建議使用string s=“ABC”模式,因?yàn)檫@種模式采用字符串緩沖池機(jī)制,效率更高。
在C 編程中,領(lǐng)導(dǎo)堅(jiān)持用char而不用string,string有那么可怕嗎?
在C中優(yōu)先使用字符串是一個(gè)好習(xí)慣。除非C的頑固習(xí)慣,否則應(yīng)該使用字符串而不是字符。
Char用于處理任何8位數(shù)據(jù)類型,如邏輯值、整數(shù)、字符ASCII碼等。要處理字符串,需要使用Char[]數(shù)組,這很麻煩,也很難控制。
String是一個(gè)模板類,專門用于處理字符串,并封裝了許多成員函數(shù)來處理字符串。它是C標(biāo)準(zhǔn)庫的一部分,所有C實(shí)現(xiàn)都支持它,并由C創(chuàng)始人推薦。
選擇使用哪一種并不困難。