String常用的構造方法
String的源碼
內部是一個數組和hash值,涉及到常量池后續補充(常量池:存儲相同的字符時只會存儲一租)
String的比較
equals()與==:String里面為我們提供了許多方法,可直接調用,這里主要是equals(),String里面重寫了object方法,所以這里的equals()是比較字符是否相同,是一個布爾類型的返回值,==則是比較地址
堆棧圖
int compareTo(String s)方法;
不同于equals()的boolean返回值,這里主要是返回一個int的值。
首先我們來看源碼,同時實現了compareable接口
當字符串相同時,比較兩個字符的ascll碼值,返回的數值也是ascll碼值,大小寫不同返回值會也不同。s1和s2比較,當s1>s2時返回大于0,s1<s2時返回小于0的數字,否則返回0.
當字符個數不相等時,返回字符個數差值
兩種特殊情況:
這也是在比較比較a和e的Ascll值,而不是長度,當字符不同時時較Ascll值
compareToIgnoreCase
作用就是無視大小寫,equals()同樣有此方法
is Empty()
判斷是否為空
特殊情況
這樣會報錯,因為這里的S3表示不指向任何對象,這時就會發生空指針異常。
字符串查找
String提供了許多查找字符的方法
底層主要是數組
字符串轉化
字符串轉化包含了許多的方法,但凡是改變字符串或者轉化的實際都是new了一個新的地址空間,而不是改變原來的值,我們可以查看調用方法的源碼
這里轉對象時已經提供了必要的構造方法
字符串轉數字
這里會涉及到兩個包裝類;Integer和Double
Integer.parseInt("1231"); Integer.valueOf("21"); 這里的value實際調用的也是parseInt
DoubleL類型