閱讀182 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Java String 類

怎麼描述String的重要性呢?我想我無論怎麼描述都沒辦法表達它的重要性,所以,認真學習String對於我們開發人員來說是非常重要的。
首先我們要明白,String類是用來操作和創建字符串的。比如說:
String str = “我是一個字符串”;
String str2 = new String(“我也是一個字符串”)
接著需要明白的也是最需要記住的,String不屬於java內置數據類型,也就是不屬於8種基本數據類型。String是一個對象,並且,String是一個非常特殊的現象,它有別的對象沒有的一些特征。
image

對於上麵兩種創建字符串的方式我來具體的分析一下:
1、 對於String來說,有一個特殊的String pool,專門存儲字符串數據。
2、 String str = “我是一個字符串”的創建過程:首先、java會去到String pool 尋找有沒有一個值為“我是一個字符串”的東西,如果有,則返回該東西的位置給str對象,如果沒有,則創建一個,並且把位置返回。
3、 對於String str2 = new String(“我也是一個字符串”)來說,java是先在堆內存中創建一個 “我也是一個字符串”的內存區域,並且把該區域的位置返回給str2,接著,還會再一次的去String pool裏麵檢查是否有一個值為“我也是一個字符串”的東西,若沒有,則創建一個。
由此可知:
1、我們現在可以知道的是,直接吧一個字符串賦值給一個String對象時,該字符串最多創建一次或者0次,為 new String(“…”)會創建1次或者是兩次字符串。
2、變量的名稱都是存儲在棧裏麵的。
3、我們所持的變量(str str2)隻是一個具體對象的內存地址,這個地址也可以叫做句柄。
需要做出補充的是:
1、 String類已經對Object類的equals方法進行了覆蓋
2、 在比較兩個對象是否相等的時候,使用的用必須是equals方法,而不等使用“==”,我會在後續的寫作中進行說明。

String常用方法
(1)length() 字符串的長度
  例:char chars[]={'a','b'.'c'};
    String s=new String(chars);
    int len=s.length();

(2)charAt() 截取一個字符
  例:char ch;
    ch="abc".charAt(1); 返回'b'
(3)getBytes()獲取對應字節數組
例:String ok="apple";
byte[]bytes=ok.getBytes();
for(int i=0;i<bytes.length;i++)
System.out.println(bytes[i]);//輸出字節數組,範圍為-128---127
(4)indexOf()和lastIndexOf()
   indexOf() 查找字符或者子串第一次出現的地方。
   lastIndexOf() 查找字符或者子串是後一次出現的地方。
(5)substring()  
它有兩種形式,第一種是:String substring(int startIndex)
  第二種是:String substring(int startIndex,int endIndex)
(6)concat() 連接兩個字符串
(7)replace() 替換
  它有兩種形式,第一種形式用一個字符在調用字符串中所有出現某個字符的地方進行替換,形式如下:
  String replace(char original,char replacement)
  例如:String s="Hello".replace('l','w');
  第二種形式是用一個字符序列替換另一個字符序列,形式如下:
  String replace(CharSequence original,CharSequence replacement)
(8)trim() 去掉起始和結尾的空格

(9)valueOf() 轉換為字符串

(10)toLowerCase() 轉換為小寫

(11)toUpperCase() 轉換為大寫
(12)startsWith()和endsWith()  
startsWith()方法決定是否以特定字符串開始,endWith()方法決定是否以特定字符串結束
更多方法請參考String的API

最後更新:2017-05-25 17:02:17

  上一篇:go  5月25日雲棲精選夜讀:
  下一篇:go  對西部數據 My Passport Wireless 移動存儲進行 Linux 魔改