IT培訓(xùn)網(wǎng)
IT在線學(xué)習(xí)
字符串顧名思義就是一些字符組合在一起組成的一串?dāng)?shù)據(jù),稱作字符串,在Java中字符串用雙引號包圍起來,格式為String string = “hello world”; 這里的hello world就是一個字符串,字符串里面可以包含任何的字符內(nèi)容;
在Java中String是一個類,所以除了上面直接讓String對象等于一個字符串之外,我們可以向普通的類一樣,使用new創(chuàng)建一個String對象;
當(dāng)我們使用第一種方法也就是String string = ”hello”;的時候,程序會在特定的內(nèi)存中(專門保存字符串的內(nèi)存)查找是否有”hello”這個字符串,如果沒有則在這個內(nèi)存區(qū)域創(chuàng)建一個”hello”字符串,當(dāng)我們再次創(chuàng)建另一個字符串String string2 = “hello”;的時候,由于這個時候,這個內(nèi)存區(qū)域已經(jīng)有了”hello”這個字符串,所以我們string2就直接指向了”hello”這個地址;這個時候我們使用string == string2的時候,得到的結(jié)果是true;也就是說兩個指向值是相等的;
當(dāng)我們使用new 的方式創(chuàng)建一個字符串對象的時候,我們查看String源碼,可以發(fā)現(xiàn)String類中是使用private final char value[];的變量來存放字符串的內(nèi)容;當(dāng)我們創(chuàng)建兩個字符串String string2 = new String(“hello”); String string3 = new String(“hello”);這個時候,我們使用string2 == string3的時候,得到的結(jié)果是false;這是由于new創(chuàng)建的對象會分別在內(nèi)存中創(chuàng)建兩個地址,所以string2和string3不相等;但是我們使用string2.value == string3.value的時候,得到的結(jié)果是true;因為這兩個地址的字符串在內(nèi)存中是指向的同一個地址的”hello”,并且和我們剛才創(chuàng)建的string所指向的”hello”地址一樣;所以我們一般比較字符串的時候,使用string2.equal(string3);的方式進(jìn)行比較;
我們可以從下圖中看出來,雖然有四個String對象,但是他們的value值的地址都是一樣的;
Java中String類的構(gòu)造方法非常的多,我們根據(jù)需求,將不同類型的數(shù)組轉(zhuǎn)換成我們想要的字符串;并且String中有我們用的比較多的一些方法,比如public boolean equalsIgnoreCase( String anotherString )表示忽略兩個字符串中字符的大小寫,比較兩個字符串是否相等;public boolean startsWith(String prefix, int toffset)表示從字符串第toffset的位置是否是由prefix開始的;public boolean endsWith(String suffix)判斷字符串是否是以suffix結(jié)束的,我們可以從源碼中看到,這個方法使用了startsWith(suffix, value.length - suffix.value.length)的方法;public String substring(int beginIndex)表示截取字符串從beginIndex開始以后的內(nèi)容;public String substring(int beginIndex, int endIndex)表示截取字符串從beginIndex到endIndex位置的內(nèi)容;
Java對字符串的封裝非常的強(qiáng)大,除了上述的常用方法之外,還有很多非常方便的方法;能夠熟練掌握String對我們的開發(fā)有非常大的幫助;
>>本文地址:http://m.hqfphsz.com/zhuanye/2020/48597.html
聲明:本站稿件版權(quán)均屬中公教育優(yōu)就業(yè)所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
1 您的年齡
2 您的學(xué)歷
3 您更想做哪個方向的工作?