html
java
一、字符串String類型自己是final聲明的,意味着咱們不能繼承String。jquery
二、字符串的對象也是不可變對象,意味着一旦進行修改,就會產生新對象正則表達式
咱們修改了字符串後,若是想要得到新的內容,必須從新接受。算法
三、String對象內部是用字符數組進行保存的api
JDK1.9以前有一個char[] value數組,JDK1.9以後byte[]數組數組
四、String類中這個char[] values數組也是final修飾的,意味着這個數組不可變,而後它是private修飾,外部不能直接操做它,String類型提供的全部的方法都是用新對象來表示修安全
改後內容的,因此保證了String對象的不可變。app
五、就由於字符串對象設計爲不可變,那麼因此字符串有常量池來保存不少常量對象,能夠共享ui
若是涉及到大量的字符串修改操做,建議使用StringBuffer或StringBuilder
一、字面常量值
String str = "hello";
二、使用構造器
String(String original)
: 初始化一個新建立的 String
對象,使其表示一個與參數相同的字符序列;換句話說,新建立的字符串是該參數字符串的副本。
public String(char[] value)
:經過當前參數中的字符數組來構造新的String。
public String(char[] value,int offset, int count)
:經過字符數組的一部分來構造新的String。
public String(byte[] bytes)
:經過使用平臺的默認字符集解碼當前參數中的字節數組來構造新的String。
public String(byte[] bytes,String charsetName)
:經過使用指定的字符集解碼當前參數中的字節數組來構造新的String。
三、靜態方法
static String copyValueOf(char[] data, int offset, int count):返回指定數組中表示該字符序列的 String
static String valueOf(char[] data) : 返回指定數組中表示該字符序列的 String
static String valueOf(char[] data, int offset, int count) : 返回指定數組中表示該字符序列的 String
static String valueOf(xx value):xx支持各類數據類型,返回各類數據類型的value參數的字符串表示形式。
四、xx.toString()
StringBuffer s = new StringBuffer(xx);
String str = s.toString(); :返回字符串對象
五、和字符串的拼接+
任意數據類型與"字符串"進行拼接,結果都是字符串
String str = "hello"; //1個
String str = new String("atguigu"); //2個
String s1 = "hello";//1個
String s2 = "world";//1個
String s3 = s1 + s2 + "java"; //"java"1個,s1 + s2拼接結果1個,最後結果1個
一、+
(1)常量+常量:結果是常量池
(3)拼接後調用intern方法:結果在常量池
二、concat:拼接的結果都是新的字符串,哪怕是兩個常量對象拼接,都在堆中
String s1 = "hello";
String s2 = "world";
String s3 = s1 + "world"; //s3字符串內容也是helloworld,s1是變量,"world"常量,變量 + 常量的結果在堆中
String s4 = s1 + s2; //s4字符串內容也是helloworld,s1和s2都是變量,變量 + 變量的結果在堆中
一、==:比較地址
二、equals(xx):比較字符串內容,嚴格區分大小寫。由於String類型重寫equals
三、equalsIgnoreCase(xx):比較字符串內容,不區分大小寫
四、compareTo(xx):比較字符串的大小,按照字符編碼值比較,嚴格區分大小寫。String類型重寫了Comparable接口的抽象方法,天然排序
五、compareToIgnoreCase(xx):比較字符串的大小,按照字符編碼值比較,不區分大小寫
String str1 = "";
String str2 = new String();
String str3 = new String("");
判斷某個字符串是不是空字符串
if("".equals(str)) //推薦
if(str!=null && str.isEmpty())
if(str!=null && str.equals(""))
if(str!=null && str.length()==0)
方法簽名 | 方法功能簡介 | |
---|---|---|
1 | String() | 建立空字符串 |
2 | String(String original) | 根據original建立一個新字符串 |
3 | static String valueOf(xx value) | 根據value內容建立一個字符串 |
4 | String intern() | 將字符串的內容存入常量池 |
5 | String concat() | 字符串拼接 |
6 | boolean equals(Object obj) | 判斷當前字符串與指定字符串內容是否已在,嚴格區分大小寫 |
7 | boolean equalsIgnoreCase(String obj) | 判斷當前字符串與指定字符串內容是否已在,不區分大小寫 |
8 | int compareTo(String str) | 比較當前字符串與指定字符串的大小,嚴格區分大小寫 |
9 | int compareToIgnoreCase(String str) | 比較當前字符串與指定字符串的大小,不區分大小寫 |
10 | boolean isEmpty() | 判斷當前字符串是否爲空 |
11 | int length() | 返回當前字符串的長度 |
12 | String toLowerCase() | 將當前字符串轉爲小寫 |
13 | String toUpperCase() | 將當前字符串轉爲大寫 |
14 | String trim() | 去掉當前字符串先後空白符 |
15 | boolean contains(xx) | 判斷當前字符串中是否包含xx |
16 | int indexOf(xx) | 在當前字符串中查找xx第一次出現的下標 |
17 | int lastIndexOf(xx) | 在當前字符串中查找xx最後一次出現的下標 |
18 | String substring(int beginIndex) | 從當前字符串的[beginIndex, 最後]截取一個子串 |
19 | String substring(int beginIndex, int endIndex) | 從當前字符串的[beginIndex, endIndex)截取一個子串 |
20 | char charAt(index) | 返回當前字符串[index]位置字符 |
21 | char[] toCharArray() | 將當前字符串的內容用一個字符數組返回 |
22 | String(char[] value) | 用value字符數組的元素構建一個新字符串 |
23 | String(char[] value,int offset, int count) | 用value字符數組的[offset]開始的count個字符構建一個新字符串 |
24 | static String copyValueOf(char[] data) | 用data字符數組的元素構建一個新字符串 |
25 | static String copyValueOf(char[] data, int offset, int count) | 用data字符數組的[offset]開始的count個字符構建一個新字符串 |
26 | static String valueOf(char[] data) | 用data字符數組的元素構建一個新字符串 |
27 | static String valueOf(char[] data, int offset, int count) | 用data字符數組的[offset]開始的count個字符構建一個新字符串 |
28 | byte[] getBytes() | 將當前字符串按照平臺默認字符編碼方式編碼爲字節序列 |
29 | byte[] getBytes(字符編碼方式) | 將當前字符串按照指定字符編碼方式編碼爲字節序列 |
30 | String(byte[] bytes) | 將bytes字節序列按照平臺默認字符編碼方式解碼爲字符串 |
31 | String(byte[] bytes,String charsetName) | 將bytes字節序列按照指定字符編碼方式解碼爲字符串 |
32 | boolean startsWith(xx) | 判斷當前字符串是否以xx開頭 |
33 | boolean endsWith(xx) | 判斷當前字符串是否以xx結尾 |
34 | boolean matchs(xx) | 判斷當前字符串是否知足xx正則 |
35 | String replace(xx,yy) | 將當前字符串中全部xx替換爲yy |
36 | String replaceFirst(xx,value) | 將當前字符串中第一個知足xx正則的字符替換爲value |
37 | String repalceAll(xx, value) | 將當前字符串中全部知足xx正則的字符替換爲value |
38 | String[] split(xx) | 將當前字符串按照xx正則拆分爲多個字符串 |
39 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) | 將當前字符串的[srtBegin,srcEnd)部分字符複製到dst字符數組中,dst數組從[dstBegin]開始存儲 |
String類的對象是不可變字符序列,StringBuffer和StringBuilder的對象是可變字符序列。
StringBuilder:JDK1.5以後引入的,線程不安全,單線程狀況下推薦使用。
經常使用的API,StringBuilder、StringBuffer的API是徹底一致的
方法簽名 | 方法區功能簡介 | |
---|---|---|
1 | StringBuffer() | 建立一個空的可變字符序列,默認長度16 |
2 | StringBuffer(String str) | 用字符串str內容建立一個可變字符序列 |
3 | StringBuffer append(數據類型 b) | 在當前字符序列後面追加b |
4 | StringBufferinsert(int index, 數據類型 s) | 在當前字符序列[index]插入s |
5 | StringBuffer delete(int start, int end) | 刪除當前字符序列[start,end)部分字符 |
6 | StringBuffer deleteCharAt(int index) | 刪除當前字符序列[index]位置字符 |
7 | void setLength(int newLength) | 修改當前字符序列的長度爲newLength |
8 | void setCharAt(int index, char ch) | 替換當前字符序列[index]位置字符爲ch |
9 | StringBuffer reverse() | 將當前字符序列內容反轉 |
10 | StringBuffer replace(int start, int end, String str) | 替換當前字符序列[start,end)部分字符爲str |
11 | int indexOf(String str) | 在當前字符序列中開始查找str第一次出現的下標 |
12 | int indexOf(String str, int fromIndex) | 在當前字符序列[fromIndex]開始查找str第一次出現的下標 |
13 | int lastIndexOf(String str) | 在當前字符序列中開始查找str最後一次出現的下標 |
14 | int lastIndexOf(String str, int fromIndex) | 在當前字符序列[fromIndex]開始查找str最後一次出現的下標 |
15 | String substring(int start) | 截取當前字符序列[start,最後]部分構成一個字符串 |
16 | String substring(int start, int end) | 截取當前字符序列[start,end)部分構成一個字符串 |
17 | String toString() | 將當前可變字符序列的內容用String字符串形式表示 |
18 | void trimToSize() | 若是緩衝區大於保存當前字符序列所需的存儲空間,則將從新調整其大小,以便更好地利用存儲空間。 |
19 | int length() | 返回當前字符序列的長度 |
20 | char charAt(int index) | 返回當前字符序列[index]位置字符 |
21 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) | 將當前字符串的[srtBegin,srcEnd)部分字符複製到dst字符數組中,dst數組從[dstBegin]開始存儲 |
32~126(共95個)是字符(32是空格),其中48~57爲0到9十個阿拉伯數字。
65~90爲26個大寫英文字母,97~122號爲26個小寫英文字母,其他爲一些標點符號、運算符號等。
爲解決一個問題:若是一份文檔中含有不一樣國家的不一樣語言的字符,那麼沒法在一份文檔中顯示全部字符。Unicode字符集涵蓋了目前人類使用的全部字符,併爲每一個字符進行統一編號,分配惟一的字符碼(Code Point)
Unicode只是定義了一個龐大的、全球通用的字符集,併爲每一個字符規定了惟一肯定的編號,具體存儲成什麼樣的字節流,取決於字符編碼方案。推薦的Unicode編碼是UTF-16
和UTF-8。