最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java深入淺出講解String類常見方法

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

1.定義字符串

字符串常見的構造方式如下:

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

2.字符串的存儲

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

我們首先來看看String的源碼

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

3.String中常用的方法

3.1字符串的比較

equals(Object anObject)

比較字符串內容是否相同,返回值為布爾值

equalsIgnoreCase(Object anObject)

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

compareTo(String s)

比較字符串內容,返回值為int

compareToIgnoreCase(String str)

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

3.2查找字符串

charAt(int index)返回下標為index處的字符,index越界會拋出異常
int indexOf(int ch)此方法是重載方法,有多個結構,功能是返回變量ch第一次在字符串中出現的位置,沒有的話返回-1
int indexOf(int ch,int fromlndex)從fromlndex位置開始向后找ch第一次出現的位置
int lastIndexOf(int ch)同樣是重載方法,從字符串末尾開始往前面找ch第一次出現的位置,沒有返回-1,和index一樣也有fromlndex參數

3.3轉換字符串

String valueOf(int i)

將數字轉換為字符串,這是個重載方法

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

String toUpperCase()

小寫字母轉換為大寫

大寫轉小寫的方法為 toLowerCase()

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

替換字符串中所有的指定內容

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

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

字符串拆分需要有幾點注意:

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

特別說明:

Java中字符串是不可變的,所有的對字符串本身的操作都會產生新的對象

至于字符串為什么不可變

因為String源碼中value數組被private和final修飾,final修飾,數組的指向對象不可變,private修飾,在類外就無法訪問,而且String中沒有提供getValue和setValue方法

4.StringBuilder和StringBuffer

因為String操作字符串會產生新的對象,所以Java中提供了這兩個類,這兩個類的大部分功能都是類似的,String、StringBuilder、StringBuffer之間的區(qū)別如下:

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

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

StringBuffer deleteCharAt(int index)

刪除index位置字符

StringBuffer delete(int start, int end)

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

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

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

String substring(int start)

從start開始一直到末尾的字符以String的方式返回

String substring(int start,int end)

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

StringBuffer reverse()

反轉字符串

String toString()

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

5.常量池

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

因為常量池的存在,所以會有如下的情況:

常量池本質是哈希表,原理這里暫時跳過,只說結論:

雙引號引起來的元素都存放在常量池里面,有且僅有一份,所以在存放常量的時候,會先去常量池檢查是否存在此常量,存在則直接給地址,不存在才會存放常量 

所以s1和s2是指向的常量池中的同一地址,而s3是實例化一個對象,這個對象指向的是常量池,但s3本身并沒有指向常量池,大致的存儲如下圖:

 String類內容結束,完

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

相關文章

  • java虛擬機運行時數據區(qū)分析

    java虛擬機運行時數據區(qū)分析

    這篇文章主要介紹了java虛擬機運行時數據區(qū)分析,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • java虛擬機學習筆記進階篇

    java虛擬機學習筆記進階篇

    在本篇內容里小編給大家分享了關于java虛擬機學習筆記的進階內容,需要的朋友們跟著學習下。
    2019-06-06
  • Spring中的NamespaceHandler加載過程源碼詳解

    Spring中的NamespaceHandler加載過程源碼詳解

    這篇文章主要介紹了Spring中的NamespaceHandler加載過程源碼詳解,Spring提供的NamespaceHandler的處理機制,簡單來說就是命名空間處理器,Spring為了開放性提供了NamespaceHandler機制,這樣我們就可以根據需求自己來處理我們設置的標簽元素,需要的朋友可以參考下
    2024-02-02
  • Java IO文件過濾器對命令設計模式的使用

    Java IO文件過濾器對命令設計模式的使用

    java io流里面使用到了很多的設計模式,最典型的就是裝飾模式,還有命令模式,下面分兩部分來講Java IO文件過濾器對命令設計模式的使用,一起看看吧
    2017-06-06
  • springboot如何讀取自定義properties并注入到bean中

    springboot如何讀取自定義properties并注入到bean中

    這篇文章主要介紹了springboot讀取自定義properties并注入到bean中,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java中的BigDecimal原理詳解

    Java中的BigDecimal原理詳解

    這篇文章主要介紹了Java中的BigDecimal原理詳解,對于日常開發(fā)過程中出現小數的問題,通常都是使用float或者double類型來處理,在java中float占用四個字節(jié), double類型占用8個字節(jié),需要的朋友可以參考下
    2023-09-09
  • 深入了解java-jwt生成與校驗

    深入了解java-jwt生成與校驗

    這篇文章主要介紹了深入了解java-jwt生成與校驗,Json web token(JWT)是為了網絡應用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開發(fā)標準(RFC 7519),該token被設計為緊湊且安全的,特別適用于分布式站點的單點登陸(SSO)場景。,需要的朋友可以參考下
    2019-06-06
  • C++內存管理看這一篇就夠了

    C++內存管理看這一篇就夠了

    這篇文章主要介紹了C/C++中的內存管理小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-08-08
  • 千萬別這樣使用Arrays.asList詳解

    千萬別這樣使用Arrays.asList詳解

    這篇文章主要給大家介紹了關于為什么說千萬別這樣使用Arrays.asList()的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用java具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06
  • 如何通過jstack命令dump線程信息

    如何通過jstack命令dump線程信息

    這篇文章主要介紹了如何通過jstack命令dump線程信息,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07

最新評論

紫金县| 石阡县| 凉城县| 河曲县| 大同县| 石柱| 萨嘎县| 阿拉善盟| 天水市| 海城市| 泸州市| 民乐县| 喀喇沁旗| 来凤县| 堆龙德庆县| 合阳县| 卓资县| 杨浦区| 黄石市| 武宣县| 华阴市| 江川县| 大埔区| 武乡县| 延庆县| 乌鲁木齐县| 绥化市| 神池县| 麻阳| 龙里县| 东兰县| 顺昌县| 家居| 宝鸡市| 金乡县| 禹州市| 克什克腾旗| 衡南县| 汾西县| 南丰县| 万全县|