您好,登錄后才能下訂單哦!
字符串顧名思義就是一些字符組合在一起組成的一串數(shù)據(jù),稱作字符串,在Java中字符串用雙引號包圍起來,格式為String string = “hello world”; 這里的hello world就是一個字符串,字符串里面可以包含任何的字符內容;
在Java中String是一個類,所以除了上面直接讓String對象等于一個字符串之外,我們可以向普通的類一樣,使用new創(chuàng)建一個String對象;
當我們使用第一種方法也就是String string = ”hello”;的時候,程序會在特定的內存中(專門保存字符串的內存)查找是否有”hello”這個字符串,如果沒有則在這個內存區(qū)域創(chuàng)建一個”hello”字符串,當我們再次創(chuàng)建另一個字符串String string2 = “hello”;的時候,由于這個時候,這個內存區(qū)域已經(jīng)有了”hello”這個字符串,所以我們string2就直接指向了”hello”這個地址;這個時候我們使用string == string2的時候,得到的結果是true;也就是說兩個指向值是相等的;
當我們使用new 的方式創(chuàng)建一個字符串對象的時候,我們查看String源碼,可以發(fā)現(xiàn)String類中是使用private final char value[];的變量來存放字符串的內容;當我們創(chuàng)建兩個字符串String string2 = new String(“hello”); String string3 = new String(“hello”);這個時候,我們使用string2 == string3的時候,得到的結果是false;這是由于new創(chuàng)建的對象會分別在內存中創(chuàng)建兩個地址,所以string2和string3不相等;但是我們使用string2.value == string3.value的時候,得到的結果是true;因為這兩個地址的字符串在內存中是指向的同一個地址的”hello”,并且和我們剛才創(chuàng)建的string所指向的”hello”地址一樣;所以我們一般比較字符串的時候,使用string2.equal(string3);的方式進行比較;
我們可以從下圖中看出來,雖然有四個String對象,但是他們的value值的地址都是一樣的;
Java中String類的構造方法非常的多,我們根據(jù)需求,將不同類型的數(shù)組轉換成我們想要的字符串;并且String中有我們用的比較多的一些方法,比如public boolean equalsIgnoreCase( String anotherString )表示忽略兩個字符串中字符的大小寫,比較兩個字符串是否相等;public boolean startsWith(String prefix, int toffset)表示從字符串第toffset的位置是否是由prefix開始的;public boolean endsWith(String suffix)判斷字符串是否是以suffix結束的,我們可以從源碼中看到,這個方法使用了startsWith(suffix, value.length - suffix.value.length)的方法;public String substring(int beginIndex)表示截取字符串從beginIndex開始以后的內容;public String substring(int beginIndex, int endIndex)表示截取字符串從beginIndex到endIndex位置的內容;
Java對字符串的封裝非常的強大,除了上述的常用方法之外,還有很多非常方便的方法;能夠熟練掌握String對我們的開發(fā)有非常大的幫助;
http://shenzhen.offcn.com/
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。