java atd_Java字符串String详解
1、String字符串
實(shí)例化String對(duì)象:
(1)直接賦值,如:String str="hello";
(2)使用關(guān)鍵字?new,如:String str=new String("hello");
由圖可知:使用?new?的方式在堆內(nèi)存中開辟了兩個(gè)空間,
第一個(gè) "hello",對(duì)象 str 沒有指向,無用?等待回收,
第二個(gè)?"hello",被?str 指向,有用。
所以?直接賦值(只開辟了一個(gè)空間) 的方式更常用和合理,可以節(jié)省一些空間。
字符串的內(nèi)容不可更改
如:
2、String字符串常用方法
String字符串的方法較多,可以根據(jù)API給出的方法去做測(cè)試,下面是常用方法:
(1)字符串長(zhǎng)度:length()?「數(shù)組中的是 length 屬性」
(2)字符串轉(zhuǎn)換數(shù)組:toCharArray()
(3)從字符串中取出指定位置的字符:charAt()
(4)字符串與byte數(shù)組的轉(zhuǎn)換:getBytes()
(5)過濾字符串中存在的字符:indexOf()? 返回指定字符在字符串中第一次出現(xiàn)處的索引,如果此字符串中沒有這樣的字符,則返回 -1。(可以用在判斷多位數(shù)是否包含某個(gè)數(shù)字時(shí),先轉(zhuǎn)成string再判斷)
(6)去掉字符串的前后空格:trim()?「空格易影響到對(duì)字符串的判斷,需適時(shí)去掉」
(7)從字符串中取出子字符串:subString()
(8)大小寫轉(zhuǎn)換:toLowerCase() toUpperCase()
(9)判斷字符串的開頭結(jié)尾字符:startWith() endsWith()
(10)替換String字符串中的一個(gè)字符:replace()
3、StringBuffer的常用方法:
append() insert() replace() indexOf()
StringBuffer類的應(yīng)用:
為什么有的時(shí)候要用StringBuffer,而不用String:
String是不可變的,所以要對(duì)String作改動(dòng)不能直接改那個(gè)String本身,而是要?jiǎng)?chuàng)建新的String,所以如果改動(dòng)次數(shù)多,用String就效率不高,而StringBuffer(如果是單線程則建議用StringBuilder,不用考慮線程安全性,效率更高點(diǎn))。有朋友說1.5后StringBuffer和String的拼接性能差不多則不敢茍同,如下測(cè)試在我的機(jī)器上用JDK1.8測(cè)試:
1 public classdemo {2 public static voidmain(String[] args) {3 long l =System.currentTimeMillis();4 String s = "";5 for (int i = 0; i < 100000; i++) {6 s += "q";7 }8 System.out.println(System.currentTimeMillis() -l);9 System.out.println(s.substring(0, 1));10
11 l =System.currentTimeMillis();12 StringBuffer sb = newStringBuffer();13 for (int i = 0; i < 100000; i++) {14 sb.append("q");15 }16 System.out.println(System.currentTimeMillis() -l);17 System.out.println(sb.toString().substring(0, 1));18 }19 }
輸出:
3870q3q
也就是做10萬次拼接,String要3.87秒,而StringBuffer則只要0.003秒,差別還是相當(dāng)大的。(JDK1.6有9s多的差距)
4、StringBuilder
一個(gè)可變的字符序列,該類被設(shè)計(jì)作用StringBuffer的一個(gè)簡(jiǎn)易替換,用在字符串緩沖區(qū)被單個(gè)線程使用的時(shí)候,建議優(yōu)先考慮該類,速度比StringBuffer要快
但如果涉及到線程安全方面,建議使用StringBuffer
常用方法:
append() insert() …
總結(jié)
以上是生活随笔為你收集整理的java atd_Java字符串String详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: linux tomcat环境变量配置_T
- 下一篇: python适用的操作系统是_操作系统先
