字串_Java學習筆記
字串的特點:
- 字串的內容永不可變
- 正是因為字串不可改變,所以字串是可以共享使用的
- 字串效果上相當於是char[ ]字元陣列,但是底層原理是byte[ ]位元組陣列
注意:程式中所有的雙引號字串,都是String類的物件,就算沒有new,也照樣是字串
字串的3+1(3種構造方法+1種直接建立)中建立方法:
三種構造方法
- public String( ); 建立一個空白字串,不含有任何內容
- public String(char[ ] array); 根據字元陣列的內容,來建立對應的字串
- public String(byte[ ] array); 根據位元組陣列的內容,來建立對應的字串
一種直接建立
- String 物件名="字串內容"; //右邊直接用雙引號
1 String str1=new String("jslkfj"); 2 System.out.println("第2種建立方法"+str1); 3 4 char[] str=new char[]{'s','o','k'}; 5 String str2=new String(str); 6 System.out.println("第3種建立方法"+str2); 7 8 byte[] str_=newbyte[]{65,66,67}; 9 String str3=new String(str_); 10 System.out.println("第4種建立方法"+str3); 11 12 //最常用也最簡單 13 String str4="helloworld"; 14 System.out.println("第5種建立方法"+str4);
字串常量池
1.對於引用型別來說,==進行的是地址值比較
2.字串常量池是Java記憶體堆中的一塊儲存區域,專門用來儲存字串直接創建出的字串物件,而用其他方法建立的陣列不在池中
字串常用成員方法
//與比較相關的常用方法
public boolean equals(Object obj); <比較兩個字串是否相等>
注意:任何物件都能用Object進行接收;
equals方法具有對稱性;
如果比較雙方一個常量一個變數,推薦:"~~".equals.str,如果變數在前如果變數沒有 賦值,會出現NullPointerException(空指標異常)錯誤。
public boolean equalsIgnoreCase(String str); <忽略大小寫,進行內容比較>
//與獲取相關的常用方法
public int length(); <獲取字串長度>
punlic String concat (String str); <將當前字串和引數字串拼接生成新的字串>
public char charAt(int index); <獲取當前索引值位置的字元>
public int indexOf(String str); <查詢引數字串在本字串當中首次出現的索引位置,若沒有返回-1>
//字串的擷取方法
public String substring(int index); <返回新擷取從引數位置一直到字串末尾的子串>
public String substring(int begin,int end); <返回begin到end位置的子串>
注意:[begin,end),包含左邊不包含右邊。
//與轉換相關的常用方法
public char[] toCharArray(); <將當前字串拆分成字元陣列>
public byte[] getByte(); <獲得當前字串底層的位元組陣列>
public String replace(CharSequence oldString,CharSequence newString);
<將所有出現的老字元子串替換成新的字元子串,返回替換後的字串>
//分割字串的方法
public String[] split(String regex); <按照引數的規則,將字串切分為若干部分>
注意:split方法的引數其實是一個“正則表示式”,如果要用"."切割,必須寫"\\."。