java atd_Java字符串String详解
1、String字符串
實例化String對象:
(1)直接賦值,如:String str="hello";
(2)使用關鍵字?new,如:String str=new String("hello");
由圖可知:使用?new?的方式在堆內存中開辟了兩個空間,
第一個 "hello",對象 str 沒有指向,無用?等待回收,
第二個?"hello",被?str 指向,有用。
所以?直接賦值(只開辟了一個空間) 的方式更常用和合理,可以節省一些空間。
字符串的內容不可更改
如:
2、String字符串常用方法
String字符串的方法較多,可以根據API給出的方法去做測試,下面是常用方法:
(1)字符串長度:length()?「數組中的是 length 屬性」
(2)字符串轉換數組:toCharArray()
(3)從字符串中取出指定位置的字符:charAt()
(4)字符串與byte數組的轉換:getBytes()
(5)過濾字符串中存在的字符:indexOf()? 返回指定字符在字符串中第一次出現處的索引,如果此字符串中沒有這樣的字符,則返回 -1。(可以用在判斷多位數是否包含某個數字時,先轉成string再判斷)
(6)去掉字符串的前后空格:trim()?「空格易影響到對字符串的判斷,需適時去掉」
(7)從字符串中取出子字符串:subString()
(8)大小寫轉換:toLowerCase() toUpperCase()
(9)判斷字符串的開頭結尾字符:startWith() endsWith()
(10)替換String字符串中的一個字符:replace()
3、StringBuffer的常用方法:
append() insert() replace() indexOf()
StringBuffer類的應用:
為什么有的時候要用StringBuffer,而不用String:
String是不可變的,所以要對String作改動不能直接改那個String本身,而是要創建新的String,所以如果改動次數多,用String就效率不高,而StringBuffer(如果是單線程則建議用StringBuilder,不用考慮線程安全性,效率更高點)。有朋友說1.5后StringBuffer和String的拼接性能差不多則不敢茍同,如下測試在我的機器上用JDK1.8測試:
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秒,差別還是相當大的。(JDK1.6有9s多的差距)
4、StringBuilder
一個可變的字符序列,該類被設計作用StringBuffer的一個簡易替換,用在字符串緩沖區被單個線程使用的時候,建議優先考慮該類,速度比StringBuffer要快
但如果涉及到線程安全方面,建議使用StringBuffer
常用方法:
append() insert() …
總結
以上是生活随笔為你收集整理的java atd_Java字符串String详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux tomcat环境变量配置_T
- 下一篇: java美元兑换,(Java实现) 美元