String的介紹用法及StringBuffer,StringBuilder比較

簡述

String是一個引用類型的表示字符序列的不可變類,它大小固定,一旦被賦值就無法被改變,屬於java.long包下的常量,因爲不可變,所以可以共享例如:

 String str = "abc";
 

等效於:

 

     char data[] = {'a', 'b', 'c'};
     String str = new String(data);
String s = new String(“hello”)和String s = “hello”;的區別?
 * 有。前者會創建2個對象,後者創建1個對象或0個對象(如果方法區的字符串常量池有的話就不用創建對象)。

所有已實現的接口:

Serializable,Charswquence,Comparable<String>

String 類包括的方法可用於檢查序列的單個字符、比較字符串、搜索字符串、提取子字符串、創建字符串副本並將所有字符全部轉換爲大寫或小寫。大小寫映射基於 Character 類指定的 Unicode 標準版。

Java 語言提供對字符串串聯符號("+")以及將其他對象轉換爲字符串的特殊支持。字符串串聯是通過 StringBuilder(或 StringBuffer)類及其 append 方法實現的。字符串轉換是通過 toString方法實現的,該方法由 Object 類定義,並可被 Java 中的所有類繼承。
構造方法除非另行說明,否則將 null 參數傳遞給此類中的構造方法或方法將拋出 NullPointerException。

String 表示一個 UTF-16 格式的字符串,其中的增補字符 由代理項對 表示(有關詳細信息,請參閱 Character 類中的Unicode字符表示形式)。索引值是指 char 代碼單元,因此增補字符在 String 中佔用兩個位置。

String 類提供處理 Unicode 代碼點(即字符)和 Unicode 代碼單元(即 char 值)的方法

構造方法

String():初始化一個新創建的 String 對象,使其表示一個空字符序列。

String(byte[] bytes) :通過使用平臺的默認字符集解碼指定的 byte 數組,構造一個新的 String

String(byte[] bytes, Charsetcharset):使用指定的 charset解碼指定的 byte 數組,構造一個新的 String

String(byte[] bytes, int offset, int length):使用平臺的默認字符集解碼指定的 byte 子數組,構造一個新的 String

String(byte[] bytes, int offset, int length, Charsetcharset):使用指定的 charset解碼指定的 byte 子數組,構造一個新的 String

String(byte[] bytes, int offset, int length, String charsetName):使用指定的字符集解碼指定的 byte 子數組,構造一個新的 String

String(byte[] bytes, StringcharsetName):使用指定的 charset解碼指定的 byte 數組,構造一個新的 String

String(char[] value):分配一個新的 String,使其表示字符數組參數中當前包含的字符序列。

String(char[] value, int offset, int count): 分配一個新的 String,它包含取自字符數組參數一個子數組的字符

String(int[] codePoints, int offset, int count):分配一個新的 String,它包含 Unicode 代碼點數組參數一個子數組的字符。

String(String original): 初始化一個新創建的 String 對象,使其表示一個與參數相同的字符序列;換句話說,新創建的字符串是該參數字符串的副本。

String(StringBuffer buffer):分配一個新的字符串,它包含字符串緩衝區參數中當前包含的字符序列。

String(StringBuilder builder): 分配一個新的字符串,它包含字符串生成器參數中當前包含的字符序列。

public class demo01 {
    public static void main(String[] args) {
        //public String():空構造
        String str1 = new String();
        System.out.println("str1:"+str1);
        System.out.println("str1.length:"+str1.length());
        System.out.println("----------------------------");
        //public String(byte[] bytes):把字節數組轉成字符串
        byte[] bys = {97,98,99,100,126};
        String str2 = new String(bys);
        System.out.println("str2:"+str2);
        System.out.println("str2.length:"+str2.length());
        System.out.println("----------------------------");
        //public String(byte[] bytes,int offset,int length):把字節數組的一部分轉成字符串
        String str3 = new String(bys,2,3);
        System.out.println("str3:"+str3);
        System.out.println("str3.length:"+str3.length());
        System.out.println("----------------------------");
        //public String(char[] value):把字符數組轉成字符串
        char[] c = {'a','b','c','愛','生','活'};
        String str4 = new String(c);
        System.out.println("str4:"+str4);
        System.out.println("str4.length:"+str4.length());
        System.out.println("----------------------------");
        //public String(char[] value,int offset,int count):把字符數組一部分轉成字符串
        String str5 = new String(c,3,3);
        System.out.println("str5:"+str5);
        System.out.println("str5.length:"+str5.length());
        System.out.println("----------------------------");
        //public String(String original):把一個字符串常量轉成字符串
        String str6 = new String("hello world");
        System.out.println("str6:"+str6);
        System.out.println("str6.length:"+str6.length());
        System.out.println("----------------------------");
        //字符串字面值"hello world"也可以看成是一個字符串對象。
        String s7 = "hello world";
        System.out.println("s7:"+s7);
        System.out.println("s7.length():"+s7.length());
    }
}

輸出結果:

str1:

str1.length:0

----------------------------

str2:abcd~

str2.length:5

----------------------------

str3:cd~

str3.length:3

----------------------------

str4:abc愛生活

str4.length:6

----------------------------

str5:愛生活

str5.length:3

----------------------------

str6:hello world

str6.length:11

----------------------------

s7:hello world

s7.length():11

 

方法

 boolean equals(Object obj):比較字符串的內容是否相同,區分大小寫       

 boolean equalsIgnoreCase(String str):比較字符串的內容是否相同,忽略大小寫       

 boolean contains(String str):判斷大字符串中是否包含小字符串       

boolean startsWith(String str):判斷字符串是否以某個指定的字符串開頭       

boolean endsWith(String str):判斷字符串是否以某個指定的字符串結尾       

boolean isEmpty():判斷字符串是否爲空

 boolean matches(String regex):此字符串是否匹配給定的正則表達式。

 int length():獲取字符串的長度

 char charAt(int index):獲取指定索引位置的字符

 int indexOf(int ch):返回指定字符再次字符串中第一次出現處的索引

  爲什麼這裏參數是int類型,而不是char類型?

  原因是:‘a’ 和 97 其實都可以代碼‘a’。

int indexOf(String str):返回指定字符串再次字符串第一次出現處的索引

 int indexOf(int ch,int fromIndex):返回指定字符在此字符串中從指定位置後第一次出現處的索引

 int indexOf(String str,int fromIndex):返回指定字符串在此字符串中從指定位置後第一次出現處的索引

String substring(int start):從指定位置開始獲取字符串,默認到末尾,包括start索引

String substring(int start,int end):從指定位置開始到指定位置結束獲取字符串,包括start索引,不包括end索引

 byte[] getBytes():把字符串轉換成字節數組       

char[] toCharArray():把字符串轉換爲字符數組       

static String valueOf(char[] chs):把字符數組轉換成字符串

static String valueOf(int i):把int類型的數據轉成字符串

注意:String類的valueOf方法可以把任意類型的數據轉成字符串

String toLowerCase():把字符串轉成小寫          

String toUpperCase():把字符串轉成大寫         

String concat(String str):把字符串拼接

String replaceFirst(String regex, String replacement):使用給定的 replacement 替換此字符串匹配給定的正則表達式的第一個子字符串。

String replaceAll(String regex,String replacement): 替換此字符串所有匹配給定的正則表達式的子字符串

·String replace(char old,char new) 舊串替換爲新串

 String replace(String old,String new)舊串替換爲新串

 int compareTo(String str)按字典順序比較兩個字符串 ,如果按字典順序此 String 對象位於參數字符串之前,則比較結果爲一個負整數。如果按字典順序此 String 對象位於參數字符串之後,則比較結果爲一個正整數。如果這兩個字符串相等,則結果爲 0;compareTo 只在方法 equals(Object) 返回 true 時才返回 0

int compareToIgnoreCase(String str) 按字典順序比較兩個字符串 ,忽略大小寫 

trim()去除空格

String [] split(String regex,int limit):根據匹配給定的正則表達式來拆分此字符串

例如,字符串 "boo:and:foo" 使用這些表達式可生成以下結果:

Regex 結果
: { "boo", "and", "foo" }
o { "b", "", ":and:f" }

 

String format(String format,Object... args):使用指定的格式字符串和參數返回一個格式化字符串

String   StringBuffer  StringBuilder區別

 

String:不可變字符序列,非線程安全,適用於少量的字符串操作的情況

StringBuilder:可變字符序列,非線程安全,適用於單線程下在字符緩衝區進行大量操作的情況

StringBuffer:可變字符序列,線程安全,適用多線程下在字符緩衝區進行大量操作的情況

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章