java拆分字符串的方法 在java中為什么String字符串可以作為對象來管理?
在java中為什么String字符串可以作為對象來管理?據(jù)我們所知,Java中創(chuàng)建字符串(對象)的方法很多:[2]直接定義字符串常量3]通過實例化字符串類來創(chuàng)建字符串對象Java中的字符串可以直接作為
在java中為什么String字符串可以作為對象來管理?
據(jù)我們所知,Java中創(chuàng)建字符串(對象)的方法很多:[2]直接定義字符串常量
3]通過實例化字符串類來創(chuàng)建字符串對象
Java中的字符串可以直接作為對象操作。原則是什么?
例如:
1,literal quantity of string,string constant pool
Java中字符串的literal quantity是一對用雙引號括起來的字符串,如“Chinese”。
字符串常量是常量池。當string STR=“string”時,編譯器將檢查在不朽生成中是否有對常量的引用。如果存在引用,編譯器將直接將地址分配給堆棧。如果沒有引用,編譯器將首先在不朽生成中打開一個內(nèi)存空間,然后將地址分配給堆棧指針。
也就是說,字符串對象的引用仍然存儲在字符串常量池中。
2. 實例化string對象
該方法根據(jù)string對象重新創(chuàng)建一個string對象,在堆內(nèi)存中添加新的內(nèi)存塊后,將指針賦給堆棧指針。相比之下,就像Java開發(fā)語言中的兩個豌豆一樣,我們經(jīng)常使用雙等號“==”使兩個變量(如3==3)為真。但是在Java中,我們使用string=“=”來判斷第二個變量。有時兩個變量是完全相同的,但是它們的結(jié)果總是不相等(false),所以對于新手開發(fā)人員來說,這常常是令人困惑的。通常在展開時,我們經(jīng)常使用A.equals(b)來判斷兩個字符串是否相等。
在Java中,使用“==”通常比較兩個變量的地址,也就是說,如果兩個變量存儲在同一個內(nèi)存單元中,它們的結(jié)果將相等。對于兩個字符串string a=“1234”string B=“1234”,對于兩個變量a和B,當使用“==”和a.equals(B)時,它們的結(jié)果是相等的,因為兩個字符串a(chǎn)和B后面是兩個字符串常量,并且它們在內(nèi)存中的存儲位置相同,所以“==”和a.equals(B)的結(jié)果是相等的;
但是對于字符串a(chǎn)=new string(“1234”)字符串B=new string(“1234”),雖然a和B的結(jié)果都是“1234”,但是用“==”來判斷時,結(jié)果是不相等的,因為此時a和B是兩個對象,內(nèi)存位置不相等,所以“=”他的判斷是不相等的,此時,使用a.equals(b)得到的結(jié)果是正確的;
使用a.equals的原因是(b)結(jié)果是兩個字符串相同,因為string類重寫了equal()方法。他的比較方法是遍歷兩個字符串中的每個字符。只有當兩個字符串的每個位置的字符相同時,此方法返回的值才會相等(true)。因此,在我們的開發(fā)過程中,當遇到字符串比較時,我們使用string equals()方法進行判斷,這樣可以減少很多bug。同樣,我們不僅可以使用equal()方法進行字符串比較,還可以使用equal()方法對任意兩個對象進行比較;
閱讀以上內(nèi)容后,您知道Java字符串比較嗎?