欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java深入淺出講解String類常見(jiàn)方法

 更新時(shí)間:2022年04月26日 14:02:10   作者:星鴉wyk  
在C語(yǔ)言中,如果要表示字符串而且對(duì)字符串進(jìn)行操作的話,依靠的是數(shù)組和指針,而Java中提供了String類用來(lái)專門(mén)表示字符串,String類中常見(jiàn)的方法,以及一些細(xì)節(jié)是本篇重點(diǎn)

1.定義字符串

字符串常見(jiàn)的構(gòu)造方式如下:

String s1 = "with";
String s2 = new String("with");
char[] array = {'w','i','t','h'};
String s3 = new String(array);

2.字符串的存儲(chǔ)

由于String是引用類型,所以變量存儲(chǔ)的并不是字符串本身,而是地址

我們首先來(lái)看看String的源碼

可以看到:String類中只有兩個(gè)成員變量,其中value是字符數(shù)組,所以定義的字符串是由value數(shù)組進(jìn)行接收的,據(jù)此可大致推出字符串的存儲(chǔ),如下圖:

3.String中常用的方法

3.1字符串的比較

equals(Object anObject)

比較字符串內(nèi)容是否相同,返回值為布爾值

equalsIgnoreCase(Object anObject)

功能同equals(),不同的是此方法忽略字母的大小寫(xiě)

compareTo(String s)

比較字符串內(nèi)容,返回值為int

compareToIgnoreCase(String str)

同compareTo(),忽略字母大小寫(xiě)

3.2查找字符串

charAt(int index)返回下標(biāo)為index處的字符,index越界會(huì)拋出異常
int indexOf(int ch)此方法是重載方法,有多個(gè)結(jié)構(gòu),功能是返回變量ch第一次在字符串中出現(xiàn)的位置,沒(méi)有的話返回-1
int indexOf(int ch,int fromlndex)從fromlndex位置開(kāi)始向后找ch第一次出現(xiàn)的位置
int lastIndexOf(int ch)同樣是重載方法,從字符串末尾開(kāi)始往前面找ch第一次出現(xiàn)的位置,沒(méi)有返回-1,和index一樣也有fromlndex參數(shù)

3.3轉(zhuǎn)換字符串

String valueOf(int i)

將數(shù)字轉(zhuǎn)換為字符串,這是個(gè)重載方法

字符串轉(zhuǎn)數(shù)字的方法有parseInt()、parseDouble()等,不過(guò)不在String類中,在各自的包裝類里面

String toUpperCase()

小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)

大寫(xiě)轉(zhuǎn)小寫(xiě)的方法為 toLowerCase()

char[] toCharArray()字符串轉(zhuǎn)為字符數(shù)組
String format()創(chuàng)建格式化的字符串
String replaceAll(String regex,String replacement)

替換字符串中所有的指定內(nèi)容

替換字符使用的是replace,返回值也是String

String replaceFirst(String regex,String replacement)替換字符串首個(gè)指定內(nèi)容
String[] split(String regex)重載方法,將字符串按照指定格式進(jìn)行拆分,可指定拆分成多少組
String substring(int beginIndex)重載方法,截取字符串內(nèi)容,可以指定結(jié)尾的位置,取值范圍是左開(kāi)右閉
String trim()去掉字符串的左右空格

字符串拆分需要有幾點(diǎn)注意:

  • 如果要按照“|”、“*”、“+”拆分,字符前需要加上轉(zhuǎn)義字符“\\”
  • 如果是“\”,則需要寫(xiě)成“\\\\”
  • 字符串有多個(gè)分隔符,可以使用“|”作為連字符

特別說(shuō)明:

Java中字符串是不可變的,所有的對(duì)字符串本身的操作都會(huì)產(chǎn)生新的對(duì)象

至于字符串為什么不可變

因?yàn)镾tring源碼中value數(shù)組被private和final修飾,final修飾,數(shù)組的指向?qū)ο蟛豢勺儯琾rivate修飾,在類外就無(wú)法訪問(wèn),而且String中沒(méi)有提供getValue和setValue方法

4.StringBuilder和StringBuffer

因?yàn)镾tring操作字符串會(huì)產(chǎn)生新的對(duì)象,所以Java中提供了這兩個(gè)類,這兩個(gè)類的大部分功能都是類似的,String、StringBuilder、StringBuffer之間的區(qū)別如下:

  • String內(nèi)容不可變,StringBuilder和StringBuffer內(nèi)容可變
  • StringBuffer采用同步處理,屬于線程安全操作,StringBuilder則不是

這里列出一些常用的方法:

StringBuffer deleteCharAt(int index)

刪除index位置字符

StringBuffer delete(int start, int end)

刪除[start, end)區(qū)間內(nèi)的字符

StringBuffer replace(int start, int end,String str)

將[start, end)位置的字符替換為str

String substring(int start)

從start開(kāi)始一直到末尾的字符以String的方式返回

String substring(int start,int end)

將[start, end)范圍內(nèi)的字符以String的方式返回

StringBuffer reverse()

反轉(zhuǎn)字符串

String toString()

將所有字符按照String的方式返回

5.常量池

為使程序運(yùn)行的更快,同時(shí)也為了節(jié)省內(nèi)存,Java為基本數(shù)據(jù)類型和String都提供了常量池,常量池的位置在堆中,這里只討論字符串常量池

因?yàn)槌A砍氐拇嬖?,所以?huì)有如下的情況:

常量池本質(zhì)是哈希表,原理這里暫時(shí)跳過(guò),只說(shuō)結(jié)論:

雙引號(hào)引起來(lái)的元素都存放在常量池里面,有且僅有一份,所以在存放常量的時(shí)候,會(huì)先去常量池檢查是否存在此常量,存在則直接給地址,不存在才會(huì)存放常量 

所以s1和s2是指向的常量池中的同一地址,而s3是實(shí)例化一個(gè)對(duì)象,這個(gè)對(duì)象指向的是常量池,但s3本身并沒(méi)有指向常量池,大致的存儲(chǔ)如下圖:

 String類內(nèi)容結(jié)束,完

到此這篇關(guān)于Java深入淺出講解String類常見(jiàn)方法的文章就介紹到這了,更多相關(guān)Java String內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring boot整合jsp及設(shè)置啟動(dòng)頁(yè)面的方法

    spring boot整合jsp及設(shè)置啟動(dòng)頁(yè)面的方法

    這篇文章主要給大家介紹了關(guān)于spring boot整合jsp及設(shè)置啟動(dòng)頁(yè)面的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用spring boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • springcloud gateway 映射失效的解決方案

    springcloud gateway 映射失效的解決方案

    這篇文章主要介紹了springcloud gateway 映射失效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Spring處理@Async導(dǎo)致的循環(huán)依賴失敗問(wèn)題的方案詳解

    Spring處理@Async導(dǎo)致的循環(huán)依賴失敗問(wèn)題的方案詳解

    這篇文章主要為大家詳細(xì)介紹了SpringBoot中的@Async導(dǎo)致循環(huán)依賴失敗的原因及其解決方案,文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下
    2022-07-07
  • 解讀springboot配置mybatis的sql執(zhí)行超時(shí)時(shí)間(mysql)

    解讀springboot配置mybatis的sql執(zhí)行超時(shí)時(shí)間(mysql)

    這篇文章主要介紹了解讀springboot配置mybatis的sql執(zhí)行超時(shí)時(shí)間(mysql),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Spring?Boot集成RabbitMQ以及隊(duì)列模式操作

    Spring?Boot集成RabbitMQ以及隊(duì)列模式操作

    RabbitMQ是實(shí)現(xiàn)AMQP(高級(jí)消息隊(duì)列協(xié)議)的消息中間件的一種,下面這篇文章主要給大家介紹了關(guān)于Spring?Boot集成RabbitMQ以及隊(duì)列模式操作的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Java多線程并發(fā)編程 并發(fā)三大要素

    Java多線程并發(fā)編程 并發(fā)三大要素

    這篇文章主要介紹了Java多線程并發(fā)編程 并發(fā)三大要素,需要的朋友可以參考下
    2017-05-05
  • java實(shí)現(xiàn)翻轉(zhuǎn)單詞順序列

    java實(shí)現(xiàn)翻轉(zhuǎn)單詞順序列

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)翻轉(zhuǎn)單詞順序列,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • 使用Feign實(shí)現(xiàn)微服務(wù)間文件下載

    使用Feign實(shí)現(xiàn)微服務(wù)間文件下載

    這篇文章主要為大家詳細(xì)介紹了使用Feign實(shí)現(xiàn)微服務(wù)間文件下載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 解析Java并發(fā)Exchanger的使用

    解析Java并發(fā)Exchanger的使用

    Exchanger是java 5引入的并發(fā)類,Exchanger顧名思義就是用來(lái)做交換的。這里主要是兩個(gè)線程之間交換持有的對(duì)象。當(dāng)Exchanger在一個(gè)線程中調(diào)用exchange方法之后,會(huì)等待另外的線程調(diào)用同樣的exchange方法。兩個(gè)線程都調(diào)用exchange方法之后,傳入的參數(shù)就會(huì)交換。
    2021-06-06
  • SpringBoot+Shiro學(xué)習(xí)之密碼加密和登錄失敗次數(shù)限制示例

    SpringBoot+Shiro學(xué)習(xí)之密碼加密和登錄失敗次數(shù)限制示例

    本篇文章主要介紹了SpringBoot+Shiro學(xué)習(xí)之密碼加密和登錄失敗次數(shù)限制示例,可以限制登陸次數(shù),有興趣的同學(xué)可以了解一下。
    2017-03-03

最新評(píng)論