Java String類用法詳解
零碎知識點
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 直接引用常量區(qū)String s = ' ';
String str = “abc” ;2.2 使用構(gòu)造方法
String()
String str = new String(“abc”); 2.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 Type Method Description char charAt(int index) 返回指定索引處的 char值。 int compareTo(String anotherString) 按字典順序比較兩個字符串。 boolean endsWith(String suffix) 測試此字符串是否以指定的后綴結(jié)尾。 boolean equals(Object anObject) 將此字符串與指定的對象進行比較。 boolean equalsIgnoreCase(String anotherString) 將此 String與另一個 String比較,忽略了大小寫。 void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 將此字符串中的字符復制到目標字符數(shù)組中。 int indexOf(int ch) 返回指定字符第一次出現(xiàn)的字符串中的索引。 int indexOf(int ch, int fromIndex) 返回指定字符第一次出現(xiàn)的此字符串中的索引,從指定索引處開始搜索。 int indexOf(String str) 返回指定子字符串第一次出現(xiàn)的字符串中的索引。 int indexOf(String str, int fromIndex) 從指定的索引處開始,返回指定子字符串第一次出現(xiàn)的字符串中的索引。 boolean isEmpty() 返回 true ,當且僅當, length()是 0 。 int lastIndexOf(int ch) 返回指定字符最后一次出現(xiàn)的字符串中的索引。 int lastIndexOf(int ch, int fromIndex) 返回指定字符最后一次出現(xiàn)的字符串中的索引,從指定的索引開始向后搜索。 int lastIndexOf(String str) 返回指定子字符串最后一次出現(xiàn)的字符串中的索引。 int lastIndexOf(String str, int fromIndex) 返回指定子字符串最后一次出現(xiàn)的字符串中的索引,從指定索引開始向后搜索。 int length() 返回此字符串的長度。 String repeat(int count) 返回一個字符串,其值為此字符串的串聯(lián)重復 count次。 String replace(CharSequence target, CharSequence replacement) 將此字符串中與文字目標序列匹配的每個子字符串替換為指定的文字替換序列。 String replaceAll(String regex, String replacement) 將給定替換的給定 regular expression匹配的此字符串的每個子字符串替換。 String replaceFirst(String regex, String replacement) 將給定替換的給定 regular expression匹配的此字符串的第一個子字符串替換。 boolean startsWith(String prefix) 測試此字符串是否以指定的前綴開頭。 boolean startsWith(String prefix, int toffset) 測試從指定索引開始的此字符串的子字符串是否以指定的前綴開頭。 String stripLeading() 返回一個字符串,其值為此字符串,并刪除了所有前導 white space 。 String stripTrailing() 返回一個字符串,其值為此字符串,并刪除所有尾隨 white space 。 CharSequence subSequence(int beginIndex, int endIndex) 返回作為此序列的子序列的字符序列。 String substring(int beginIndex) 返回一個字符串,該字符串是此字符串的子字符串。 String substring(int beginIndex, int endIndex) 返回一個字符串,該字符串是此字符串的子字符串。 char[] toCharArray() 將此字符串轉(zhuǎn)換為新的字符數(shù)組。 String toLowerCase() 使用默認語言環(huán)境的規(guī)則將此 String所有字符轉(zhuǎn)換為小寫。 String toUpperCase() 使用默認語言環(huán)境的規(guī)則將此 String所有字符轉(zhuǎn)換為大寫。 String toUpperCase(Locale locale) 使用給定 Locale的規(guī)則將此 String所有字符轉(zhuǎn)換為大寫。 static String valueOf(T i) 返回T參數(shù)的字符串表示形式。到此這篇關于Java String類用法詳解的文章就介紹到這了,更多相關Java String內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持好吧啦網(wǎng)!
相關文章:
1. 解析原生JS getComputedStyle2. CSS3中Transition屬性詳解以及示例分享3. 通過CSS數(shù)學函數(shù)實現(xiàn)動畫特效4. 利用CSS3新特性創(chuàng)建透明邊框三角5. 低版本IE正常運行HTML5+CSS3網(wǎng)站的3種解決方案6. CSS3實例分享之多重背景的實現(xiàn)(Multiple backgrounds)7. IE6/IE7/IE8/IE9中tbody的innerHTML不能賦值的完美解決方案8. XML入門的常見問題(二)9. XML入門的常見問題(一)10. 阿里前端開發(fā)中的規(guī)范要求
