java substring截取字符串_lt;12gt;深入了解字符串
深入了解字符串
完整視頻教程:
Java輕松入門經(jīng)典教程[檸檬學(xué)院]-學(xué)習(xí)視頻教程-培訓(xùn)課程-騰訊課堂?ke.qq.com字符串主要用于編程,用于概念說明、函數(shù)解釋、用法詳述等,字符串在存儲(chǔ)上類似于字符數(shù)組,所以它的每一個(gè)單元都是可以提取的,如s =“abcdef”,則可以認(rèn)為(此處為便于理解,實(shí)際上Java的字符串并不能這樣使用。):s[1]=”a”; s[2]=”b”。
一、字符串的處理
求子串
- 從HelloWorld中取出World(從0開始數(shù),第5個(gè)到第9個(gè)字符),我們使用String類中的substring(startBit,endBit)這個(gè)方法,startBit代表起始位置,endBit代表結(jié)束位置。坐標(biāo)采用前閉后開原則,假設(shè):substring(5,9);,截取的字符串包好第五個(gè),但不包含第九個(gè),需要包含第九個(gè)的話就把9改成10;
測(cè)試字符串是否相等
- 比較字符串是否相等,使用的是equals()方法,我們所有的類都是繼承Object類,Object類中就有equals()方法,任何類都可以使用和重寫equals()。詳情請(qǐng)閱讀JavaAPI。
- 在Object類中的equals()方法的作用是:兩個(gè)引用都是指向同一個(gè)對(duì)象時(shí)(也就是內(nèi)存地址相同),才會(huì)返回true。
- 在String類中的equals()方法的作用是:將此字符串與指定的對(duì)象比較,當(dāng)且僅當(dāng)該參數(shù)不為null,并且是與此對(duì)象表示相同字符序列的String對(duì)象時(shí),才返回true。
String的equals比較的是內(nèi)容,內(nèi)容一致就返回true。
下圖中,s和s1如果是Object類型,比較返回false,因此內(nèi)存地址不同。如果s和s1是String類型,比較返回true,因?yàn)閮?nèi)容一致。
二、字符串的存儲(chǔ)特點(diǎn)
1. 寄存器(cpu內(nèi)部的高速存儲(chǔ)器)2. 棧
3. 堆 *new出來的對(duì)象都在堆內(nèi)存中。
4. 靜態(tài)存儲(chǔ)區(qū)
5. 常量存儲(chǔ)區(qū) *用final修飾的都在常量存儲(chǔ)區(qū),String就是被final修飾的,同時(shí)String還有一個(gè)常量池。
6. 其他存儲(chǔ)區(qū)
下圖中我們預(yù)先判斷一下結(jié)果
1. s1.equals(s2)true。2. s1==s2 false
3. s1.equals(s3)false
4. s1==s3 false
實(shí)際結(jié)果:
第二個(gè)結(jié)果我們預(yù)計(jì)錯(cuò)誤,雖然s1和s2是兩個(gè)對(duì)象,但是我們的內(nèi)存地址是一樣的。這是因?yàn)镾tring是存放在常量池中而不是在堆中,當(dāng)我們給變量賦予一個(gè)字符串時(shí),首先會(huì)在常量池尋找是否已經(jīng)有這個(gè)字符串,如果有,直接指向該字符串,沒有的話就創(chuàng)建一個(gè)。所以s1和s2的內(nèi)存地址是相同的。
我們知道,String是被final修飾的,所以字符串是不能修改的,因此字符串的拼接并沒有修改原來的字符串,而是重新創(chuàng)建一個(gè)新的字符串。所以修改String的值也就修改了內(nèi)存地址,s1==s3也是返回false。
當(dāng)我們使用String s = new String(“abc”);這種方式時(shí),Sting對(duì)象將在堆內(nèi)存中創(chuàng)建,所有特性符合堆內(nèi)存特性。
按照常量池思維,c==d應(yīng)該返回true,但實(shí)際上是false,因?yàn)閏和d都是new出來的,是存儲(chǔ)在堆內(nèi)存,堆內(nèi)存不會(huì)鑒別字符串是否重復(fù),只要new就創(chuàng)建新對(duì)象。
- 字符串編輯
總結(jié)
以上是生活随笔為你收集整理的java substring截取字符串_lt;12gt;深入了解字符串的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 双线性插值算法c 语言实现,双线性插值
- 下一篇: 高德地图画带箭头的线_精选 | 这款充电