溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java核心類庫String的簡單介紹及常用方法

發(fā)布時間:2021-07-30 09:09:45 來源:億速云 閱讀:126 作者:chen 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“Java核心類庫String的簡單介紹及常用方法”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

目錄
  • 一、 簡介

    • 零碎知識點

    • 字符串常量池

    • 堆在邏輯上的劃分

  • 二、 創(chuàng)建對象

    • 2.1.1 直接引用常量區(qū)

    • 2.1.2 使用構(gòu)造方法

    • 2.1.3 兩種實例化方法的區(qū)別

  • 三、常用方法

一、 簡介

零碎知識點

  • extends Object

    • implements serializable,Comparable< String >,charSequence

  • String類表示字符串,所有字符串文字都是此類的對象

  • 字符串是不變的,值在創(chuàng)建后無法更改

  • 對象一旦聲明則不可改變,改變的只是地址,原來的字符串還是存在的,并且產(chǎn)生垃圾

  • 任何一個“”都為字符串對象,無賦值則為匿名對象

  • 用“+”拼接字符串盡量避免,一般用append+toString

  • StringBuilder(線程不安全)和StringBuffer(線程安全),忽略線程安全,其它都一樣

由于String對象是不可變的,所以可以共享(即兩個字符串一樣則共享同一塊內(nèi)存地址)

//共享
String t1 = "123";
String t2 = "123";
System.out.ptintln(t1 == t2);//true,(== 比較的是內(nèi)存地址)

字符串常量池

存在于方法區(qū)(加載代碼的內(nèi)存區(qū)),被所有的線程共享

堆在邏輯上的劃分

堆在邏輯上被分為三部分:

新生代:存儲剛創(chuàng)建的對象(GC詢問次數(shù)最多為15次,>15則進入老年代)

老年代:垃圾回收次數(shù)超過15次(即15次之后依然存活的對象)

永久代:靜態(tài)修飾的所有東西(類、方法、常量…)

每一個字符串對象的創(chuàng)建都會放入永久代(每次創(chuàng)建都先去永久代,前提:不用new,new開辟新內(nèi)存)

二、 創(chuàng)建對象

2.1.1 直接引用常量區(qū)

String s = " ";

String str = “abc” ;

2.1.2 使用構(gòu)造方法

String()

String str = new String(“abc”);

2.1.3 兩種實例化方法的區(qū)別

區(qū)別

直接賦值:

只開辟一塊堆內(nèi)存空間,并且會自動入池,不會產(chǎn)生垃圾會將匿名對象“”放入對象池,下一次不同對象直接賦值時直接利用池中已經(jīng)存在的匿名對象

構(gòu)造方法:

在堆內(nèi)存創(chuàng)建對象會開辟兩塊堆內(nèi)存空間,其中一塊堆內(nèi)存會變成垃圾被系統(tǒng)回收,而且不能夠自動入池,需要通過public String intern();方法進行手工入池。

三、常用方法

Modifier and TypeMethodDescription
charcharAt(int index)返回指定索引處的 char值。
intcompareTo(String anotherString)按字典順序比較兩個字符串。
booleanendsWith(String suffix)測試此字符串是否以指定的后綴結(jié)尾。
booleanequals(Object anObject)將此字符串與指定的對象進行比較。
booleanequalsIgnoreCase(String anotherString)將此 String與另一個 String比較,忽略了大小寫。
voidgetChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)將此字符串中的字符復(fù)制到目標(biāo)字符數(shù)組中。
intindexOf(int ch)返回指定字符第一次出現(xiàn)的字符串中的索引。
intindexOf(int ch, int fromIndex)返回指定字符第一次出現(xiàn)的此字符串中的索引,從指定索引處開始搜索。
intindexOf(String str)返回指定子字符串第一次出現(xiàn)的字符串中的索引。
intindexOf(String str, int fromIndex)從指定的索引處開始,返回指定子字符串第一次出現(xiàn)的字符串中的索引。
booleanisEmpty()返回 true ,當(dāng)且僅當(dāng), length()是 0 。
intlastIndexOf(int ch)返回指定字符最后一次出現(xiàn)的字符串中的索引。
intlastIndexOf(int ch, int fromIndex)返回指定字符最后一次出現(xiàn)的字符串中的索引,從指定的索引開始向后搜索。
intlastIndexOf(String str)返回指定子字符串最后一次出現(xiàn)的字符串中的索引。
intlastIndexOf(String str, int fromIndex)返回指定子字符串最后一次出現(xiàn)的字符串中的索引,從指定索引開始向后搜索。
intlength()返回此字符串的長度。
Stringrepeat(int count)返回一個字符串,其值為此字符串的串聯(lián)重復(fù) count次。
Stringreplace(CharSequence target, CharSequence replacement)將此字符串中與文字目標(biāo)序列匹配的每個子字符串替換為指定的文字替換序列。
StringreplaceAll(String regex, String replacement)將給定替換的給定 regular expression匹配的此字符串的每個子字符串替換。
StringreplaceFirst(String regex, String replacement)將給定替換的給定 regular expression匹配的此字符串的第一個子字符串替換。
booleanstartsWith(String prefix)測試此字符串是否以指定的前綴開頭。
booleanstartsWith(String prefix, int toffset)測試從指定索引開始的此字符串的子字符串是否以指定的前綴開頭。
StringstripLeading()返回一個字符串,其值為此字符串,并刪除了所有前導(dǎo) white space 。
StringstripTrailing()返回一個字符串,其值為此字符串,并刪除所有尾隨 white space 。
CharSequencesubSequence(int beginIndex, int endIndex)返回作為此序列的子序列的字符序列。
Stringsubstring(int beginIndex)返回一個字符串,該字符串是此字符串的子字符串。
Stringsubstring(int beginIndex, int endIndex)返回一個字符串,該字符串是此字符串的子字符串。
char[]toCharArray()將此字符串轉(zhuǎn)換為新的字符數(shù)組。
StringtoLowerCase()使用默認(rèn)語言環(huán)境的規(guī)則將此 String所有字符轉(zhuǎn)換為小寫。
StringtoUpperCase()使用默認(rèn)語言環(huán)境的規(guī)則將此 String所有字符轉(zhuǎn)換為大寫。
StringtoUpperCase(Locale locale)使用給定 Locale的規(guī)則將此 String所有字符轉(zhuǎn)換為大寫。
static StringvalueOf(T i)返回T參數(shù)的字符串表示形式。

“Java核心類庫String的簡單介紹及常用方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI