java字串

ii_chengzi發表於2020-05-14

字串顧名思義就是一些字元組合在一起組成的一串資料,稱作字串,在Java中字串用雙引號包圍起來,格式為String string = “hello world”; 這裡的hello world就是一個字串,字串裡面可以包含任何的字元內容;

在Java中String是一個類,所以除了上面直接讓String物件等於一個字串之外,我們可以向普通的類一樣,使用new建立一個String物件;

當我們使用第一種方法也就是String string = ”hello”;的時候,程式會在特定的記憶體中(專門儲存字串的記憶體)查詢是否有”hello”這個字串,如果沒有則在這個記憶體區域建立一個”hello”字串,當我們再次建立另一個字串String string2 = “hello”;的時候,由於這個時候,這個記憶體區域已經有了”hello”這個字串,所以我們string2就直接指向了”hello”這個地址;這個時候我們使用string == string2的時候,得到的結果是true;也就是說兩個指向值是相等的;

當我們使用new 的方式建立一個字串物件的時候,我們檢視String原始碼,可以發現String類中是使用private final char value[];的變數來存放字串的內容;當我們建立兩個字串String string2 = new String(“hello”); String string3 = new String(“hello”);這個時候,我們使用string2 == string3的時候,得到的結果是false;這是由於new建立的物件會分別在記憶體中建立兩個地址,所以string2和string3不相等;但是我們使用string2.value == string3.value的時候,得到的結果是true;因為這兩個地址的字串在記憶體中是指向的同一個地址的”hello”,並且和我們剛才建立的string所指向的”hello”地址一樣;所以我們一般比較字串的時候,使用string2.equal(string3);的方式進行比較;

我們可以從下圖中看出來,雖然有四個String物件,但是他們的value值的地址都是一樣的;

【Java基礎知識】Java字串

Java中String類的構造方法非常的多,我們根據需求,將不同型別的陣列轉換成我們想要的字串;並且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對我們的開發有非常大的幫助;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31543790/viewspace-2692132/,如需轉載,請註明出處,否則將追究法律責任。

相關文章