Java String類(lèi)用法詳解
一、簡(jiǎn)介
零碎知識(shí)點(diǎn)
- extends Object
- implements serializable,Comparable< String >,charSequence
- String類(lèi)表示字符串,所有字符串文字都是此類(lèi)的對(duì)象
- 字符串是不變的,值在創(chuàng)建后無(wú)法更改
- 對(duì)象一旦聲明則不可改變,改變的只是地址,原來(lái)的字符串還是存在的,并且產(chǎn)生垃圾
- 任何一個(gè)“”都為字符串對(duì)象,無(wú)賦值則為匿名對(duì)象
- 用“+”拼接字符串盡量避免,一般用append+toString
- StringBuilder(線(xiàn)程不安全)和StringBuffer(線(xiàn)程安全),忽略線(xiàn)程安全,其它都一樣
由于String對(duì)象是不可變的,所以可以共享(即兩個(gè)字符串一樣則共享同一塊內(nèi)存地址)
//共享 String t1 = "123"; String t2 = "123"; System.out.ptintln(t1 == t2);//true,(== 比較的是內(nèi)存地址)
字符串常量池
存在于方法區(qū)(加載代碼的內(nèi)存區(qū)),被所有的線(xiàn)程共享
堆在邏輯上的劃分
堆在邏輯上被分為三部分:
新生代:存儲(chǔ)剛創(chuàng)建的對(duì)象(GC詢(xún)問(wèn)次數(shù)最多為15次,>15則進(jìn)入老年代)
老年代:垃圾回收次數(shù)超過(guò)15次(即15次之后依然存活的對(duì)象)
永久代:靜態(tài)修飾的所有東西(類(lèi)、方法、常量…)
每一個(gè)字符串對(duì)象的創(chuàng)建都會(huì)放入永久代(每次創(chuàng)建都先去永久代,前提:不用new,new開(kāi)辟新內(nèi)存)
二、創(chuàng)建對(duì)象
2.1 直接引用常量區(qū)
String s = " ";
String str = “abc” ;
2.2 使用構(gòu)造方法
String()
String str = new String(“abc”);
2.3 兩種實(shí)例化方法的區(qū)別
區(qū)別
直接賦值:
- 只開(kāi)辟一塊堆內(nèi)存空間,并且會(huì)自動(dòng)入池,不會(huì)產(chǎn)生垃圾
- 會(huì)將匿名對(duì)象“”放入對(duì)象池,下一次不同對(duì)象直接賦值時(shí)直接利用池中已經(jīng)存在的匿名對(duì)象
構(gòu)造方法:
- 在堆內(nèi)存創(chuàng)建對(duì)象
- 會(huì)開(kāi)辟兩塊堆內(nèi)存空間,其中一塊堆內(nèi)存會(huì)變成垃圾被系統(tǒng)回收,而且不能夠自動(dòng)入池,需要通過(guò)public String intern();方法進(jìn)行手工入池。
三、常用方法
| Modifier and Type | Method | Description |
|---|---|---|
| char | charAt(int index) | 返回指定索引處的 char值。 |
| int | compareTo(String anotherString) | 按字典順序比較兩個(gè)字符串。 |
| boolean | endsWith(String suffix) | 測(cè)試此字符串是否以指定的后綴結(jié)尾。 |
| boolean | equals(Object anObject) | 將此字符串與指定的對(duì)象進(jìn)行比較。 |
| boolean | equalsIgnoreCase(String anotherString) | 將此 String與另一個(gè) String比較,忽略了大小寫(xiě)。 |
| void | getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) | 將此字符串中的字符復(fù)制到目標(biāo)字符數(shù)組中。 |
| int | indexOf(int ch) | 返回指定字符第一次出現(xiàn)的字符串中的索引。 |
| int | indexOf(int ch, int fromIndex) | 返回指定字符第一次出現(xiàn)的此字符串中的索引,從指定索引處開(kāi)始搜索。 |
| int | indexOf(String str) | 返回指定子字符串第一次出現(xiàn)的字符串中的索引。 |
| int | indexOf(String str, int fromIndex) | 從指定的索引處開(kāi)始,返回指定子字符串第一次出現(xiàn)的字符串中的索引。 |
| boolean | isEmpty() | 返回 true ,當(dāng)且僅當(dāng), length()是 0 。 |
| int | lastIndexOf(int ch) | 返回指定字符最后一次出現(xiàn)的字符串中的索引。 |
| int | lastIndexOf(int ch, int fromIndex) | 返回指定字符最后一次出現(xiàn)的字符串中的索引,從指定的索引開(kāi)始向后搜索。 |
| int | lastIndexOf(String str) | 返回指定子字符串最后一次出現(xiàn)的字符串中的索引。 |
| int | lastIndexOf(String str, int fromIndex) | 返回指定子字符串最后一次出現(xiàn)的字符串中的索引,從指定索引開(kāi)始向后搜索。 |
| int | length() | 返回此字符串的長(zhǎng)度。 |
| String | repeat(int count) | 返回一個(gè)字符串,其值為此字符串的串聯(lián)重復(fù) count次。 |
| String | replace(CharSequence target, CharSequence replacement) | 將此字符串中與文字目標(biāo)序列匹配的每個(gè)子字符串替換為指定的文字替換序列。 |
| String | replaceAll(String regex, String replacement) | 將給定替換的給定 regular expression匹配的此字符串的每個(gè)子字符串替換。 |
| String | replaceFirst(String regex, String replacement) | 將給定替換的給定 regular expression匹配的此字符串的第一個(gè)子字符串替換。 |
| boolean | startsWith(String prefix) | 測(cè)試此字符串是否以指定的前綴開(kāi)頭。 |
| boolean | startsWith(String prefix, int toffset) | 測(cè)試從指定索引開(kāi)始的此字符串的子字符串是否以指定的前綴開(kāi)頭。 |
| String | stripLeading() | 返回一個(gè)字符串,其值為此字符串,并刪除了所有前導(dǎo) white space 。 |
| String | stripTrailing() | 返回一個(gè)字符串,其值為此字符串,并刪除所有尾隨 white space 。 |
| CharSequence | subSequence(int beginIndex, int endIndex) | 返回作為此序列的子序列的字符序列。 |
| String | substring(int beginIndex) | 返回一個(gè)字符串,該字符串是此字符串的子字符串。 |
| String | substring(int beginIndex, int endIndex) | 返回一個(gè)字符串,該字符串是此字符串的子字符串。 |
| char[] | toCharArray() | 將此字符串轉(zhuǎn)換為新的字符數(shù)組。 |
| String | toLowerCase() | 使用默認(rèn)語(yǔ)言環(huán)境的規(guī)則將此 String所有字符轉(zhuǎn)換為小寫(xiě)。 |
| String | toUpperCase() | 使用默認(rèn)語(yǔ)言環(huán)境的規(guī)則將此 String所有字符轉(zhuǎn)換為大寫(xiě)。 |
| String | toUpperCase(Locale locale) | 使用給定 Locale的規(guī)則將此 String所有字符轉(zhuǎn)換為大寫(xiě)。 |
| static String | valueOf(T i) | 返回T參數(shù)的字符串表示形式。 |
到此這篇關(guān)于Java String類(lèi)用法詳解的文章就介紹到這了,更多相關(guān)Java String內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot整合TomCat實(shí)現(xiàn)本地圖片服務(wù)器代碼解析
這篇文章主要介紹了SpringBoot整合TomCat實(shí)現(xiàn)本地圖片服務(wù)器代碼解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
java Hibernate 一對(duì)多自身關(guān)聯(lián)問(wèn)題
formBean在提交表單的時(shí)候,域中數(shù)據(jù)庫(kù)在下一次中仍然保留引起的,struts formBean 默認(rèn)的scope為session,手動(dòng)設(shè)置為request,就好了2008-07-07
Springboot中使用Filter實(shí)現(xiàn)Header認(rèn)證詳解
這篇文章主要介紹了Springboot中使用Filter實(shí)現(xiàn)Header認(rèn)證詳解,當(dāng)在?web.xml?注冊(cè)了一個(gè)?Filter?來(lái)對(duì)某個(gè)?Servlet?程序進(jìn)行攔截處理時(shí),它可以決定是否將請(qǐng)求繼續(xù)傳遞給?Servlet?程序,以及對(duì)請(qǐng)求和響應(yīng)消息是否進(jìn)行修改,需要的朋友可以參考下2023-08-08
基于Spring p標(biāo)簽和c標(biāo)簽注入方式
這篇文章主要介紹了Spring p標(biāo)簽和c標(biāo)簽注入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
java 線(xiàn)程鎖詳細(xì)介紹及實(shí)例代碼
這篇文章主要介紹了java 線(xiàn)程鎖詳細(xì)介紹及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-12-12
Java實(shí)現(xiàn)復(fù)制文件并命名的超簡(jiǎn)潔寫(xiě)法
這篇文章主要介紹了Java實(shí)現(xiàn)復(fù)制文件并命名的超簡(jiǎn)潔寫(xiě)法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
簡(jiǎn)單學(xué)習(xí)Java+MongoDB
本文給大家介紹的是如何簡(jiǎn)單的使用java+MongoDB實(shí)現(xiàn)數(shù)據(jù)調(diào)用的問(wèn)題,非常的實(shí)用,有需要的小伙伴可以參考下2016-03-03
Springboot2.0配置JPA多數(shù)據(jù)源連接兩個(gè)mysql數(shù)據(jù)庫(kù)方式
這篇文章主要介紹了Springboot2.0配置JPA多數(shù)據(jù)源連接兩個(gè)mysql數(shù)據(jù)庫(kù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09

