toString() ,String,String.valueOf

toString() ,String,String.valueOf


參考:  StringBuffer和String的區別     http://t240178168.iteye.com/blog/1667215
 
常用的方法有Object#toString(),(String)要轉換的對象,String.valueOf(Object)等。 

下面對這些方法一一進行分析。 

方法1:採用 Object#toString()方法 

請看下面的例子: 

Object object = getObject(); 
System.out.println(object.toString()); 

在這種使用方法中,因爲java.lang.Object類裏已有public方法.toString(),所以對任何嚴格意義上的java對象都可以調用此方法。但在使用時要注意,必須保證object不是null值,否則將拋出NullPointerException異常。採用這種方法時,通常派生類會覆蓋Object裏的toString()方法。 

方法2:採用類型轉換(String)object方法 

這是標準的類型轉換,將object轉成String類型的值。使用這種方法時,需要注意的是類型必須能轉成String類型。因此最好用instanceof做個類型檢查,以判斷是否可以轉換。否則容易拋出CalssCastException異常。此外,需特別小心的是因定義爲Object 類型的對象在轉成String時語法檢查並不會報錯,這將可能導致潛在的錯誤存在。這時要格外小心。 

如: Object obj = new Integer(100); 
String strVal = (String)obj; 

在運行時將會出錯,因爲將Integer類型強制轉換爲String類型,無法通過。 

但是, Integer obj = new Integer(100); 
String strVal = (String)obj; 
如是格式代碼,將會報語法錯誤。此外,因null值可以強制轉換爲任何java類類型,(String)null也是合法的。 

方法3:採用String.valueOf(Object) 

String.valueOf(Object)的基礎是Object#toString()。但它與Object#toString()又有所不同。在前面方法1的分析中提到,使用後者時需保證不爲null。但採用第三種方法時,將不用擔心object是否爲null值這一問題。 

爲了便於說明問題,我們來分析一下相關的源代碼。 

Jdk裏String# valueOf(Object)源碼如下: 

public static String valueOf(Object obj) 

return (obj == null) ? "null" : obj.toString(); 


從上面的源碼可以很清晰的看出null值不用擔心的理由。但是,這也恰恰給了我們隱患。 
我們應當注意到,當object爲null 時,String.valueOf(object)的值是字符串”null”,而不是null!!!在使用過程中切記要注意。 

我們用 

if(String.valueOf(object)==null){ 
System.out.println(“傳入的值是null!”); 

這樣的語句將可能會發生什麼問題。再想一下,向控制檯輸出時,在視覺上如下語句在執行的結果上有什麼不同: 
System.out.println(String.valueOf(null)); 
System.out.println(null); 
我們看到的輸出將是一模一樣的東西:null,但它們意義不相同 





String的用法收集

博客分類:  java
構造方法: 
String() 
          初始化一個新創建的 String 對象,它表示一個空字符序列。 
String(byte[] bytes) 
          構造一個新的 String,方法是使用平臺的默認字符集解碼字節的指定數組。 
String(byte[] bytes, int offset, int length) 
          構造一個新的 String,方法是使用指定的字符集解碼字節的指定子數組。 
String(byte[] bytes, int offset, int length, String charsetName) 
          構造一個新的 String,方法是使用指定的字符集解碼字節的指定子數組。 
String(byte[] bytes, String charsetName) 
          構造一個新的 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) 
          分配一個新的字符串,它包含當前包含在字符串生成器參數中的字符序列 
方法總結: 
char charAt(int index) 
          返回指定索引處的 char 值。 
int codePointAt(int index) 
          返回指定索引處的字符(Unicode 代碼點)。 
int codePointBefore(int index) 
          返回指定索引之前的字符(Unicode 代碼點)。 
int codePointCount(int beginIndex, int endIndex) 
          返回此 String 的指定文本範圍中的 Unicode 代碼點數。 
int compareTo(String anotherString) 
          按字典順序比較兩個字符串(區分大小寫)。 
int compareToIgnoreCase(String str) 
          不考慮大小寫,按字典順序比較兩個字符串。 
String concat(String str) 
          將指定字符串聯到此字符串的結尾。 
boolean contains(CharSequence s) 
          當且僅當此字符串包含 char 值的指定序列時,才返回 true。 
boolean contentEquals(CharSequence cs) 
          當且僅當此 String 表示與指定序列相同的 char 值時,才返回 true。 
boolean contentEquals(StringBuffer sb) 
          當且僅當此 String 表示與指定的 StringBuffer 相同的字符序列時,才返回 true。 
static String copyValueOf(char[] data) 
          返回指定數組中表示該字符序列的字符串。 
static String copyValueOf(char[] data, int offset, int count) 
          返回指定數組中表示該字符序列的字符串。 
boolean endsWith(String suffix) 
          測試此字符串是否以指定的後綴結束。 
boolean equals(Object anObject) 
          比較此字符串與指定的對象。 
boolean equalsIgnoreCase(String anotherString) 
          將此 String 與另一個 String 進行比較,不考慮大小寫。 
static String format(Locale l, String format, Object... args) 
          使用指定的語言環境、格式字符串和參數返回一個格式化字符串。 
static String format(String format, Object... args) 
          使用指定的格式字符串和參數返回一個格式化字符串。 
byte[] getBytes() 
          使用平臺默認的字符集將此 String 解碼爲字節序列,並將結果存儲到一個新的字節數組中。  
byte[] getBytes(String charsetName) 
          使用指定的字符集將此 String 解碼爲字節序列,並將結果存儲到一個新的字節數組中。 
void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 
          將字符從此字符串複製到目標字符數組。 
int hashCode() 
          返回此字符串的哈希碼。 
int indexOf(int ch) 
          返回指定字符在此字符串中第一次出現處的索引。 
int indexOf(int ch, int fromIndex) 
          從指定的索引開始搜索,返回在此字符串中第一次出現指定字符處的索引。 
int indexOf(String str) 
          返回第一次出現的指定子字符串在此字符串中的索引。 
int indexOf(String str, int fromIndex) 
          從指定的索引處開始,返回第一次出現的指定子字符串在此字符串中的索引。 
String intern() 
          返回字符串對象的規範化表示形式。 
int lastIndexOf(int ch) 
          返回最後一次出現的指定字符在此字符串中的索引。 
int lastIndexOf(int ch, int fromIndex) 
          從指定的索引處開始進行後向搜索,返回最後一次出現的指定字符在此字符串中的索引。 
int lastIndexOf(String str) 
          返回在此字符串中最右邊出現的指定子字符串的索引。 
int lastIndexOf(String str, int fromIndex) 
          從指定的索引處開始向後搜索,返回在此字符串中最後一次出現的指定子字符串的索引。 
int length() 
          返回此字符串的長度。 
boolean matches(String regex) 
          通知此字符串是否匹配給定的正則表達式。 
int offsetByCodePoints(int index, int codePointOffset) 
          返回此 String 中從給定的 index 處偏移 codePointOffset 個代碼點的索引。 
boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) 
          測試兩個字符串區域是否相等。 
boolean regionMatches(int toffset, String other, int ooffset, int len) 
          測試兩個字符串區域是否相等。 
String replace(char oldChar, char newChar) 
          返回一個新的字符串,它是通過用 newChar 替換此字符串中出現的所有 oldChar 而生成的。 
String replace(CharSequence target, CharSequence replacement) 
          使用指定的字面值替換序列替換此字符串匹配字面值目標序列的每個子字符串。 
String replaceAll(String regex, String replacement) 
          使用給定的 replacement 字符串替換此字符串匹配給定的正則表達式的每個子字符串。 
String replaceFirst(String regex, String replacement) 
          使用給定的 replacement 字符串替換此字符串匹配給定的正則表達式的第一個子字符串。 
String[] split(String regex) 
          根據給定的正則表達式的匹配來拆分此字符串。 
String[] split(String regex, int limit) 
          根據匹配給定的正則表達式來拆分此字符串。 
boolean startsWith(String PRefix) 
          測試此字符串是否以指定的前綴開始。 
boolean startsWith(String prefix, int toffset) 
          測試此字符串是否以指定前綴開始,該前綴以指定索引開始。 
CharSequence subSequence(int beginIndex, int endIndex) 
          返回一個新的字符序列,它是此序列的一個子序列。 
String substring(int beginIndex) 
          返回一個新的字符串,它是此字符串的一個子字符串。 
String substring(int beginIndex, int endIndex) 
          返回一個新字符串,它是此字符串的一個子字符串。 
char[] toCharArray() 
          將此字符串轉換爲一個新的字符數組。 
String toLowerCase() 
          使用默認語言環境的規則將此 String 中的所有字符都轉換爲小寫。 
String toLowerCase(Locale locale) 
          使用給定 Locale 的規則將此 String 中的所有字符都轉換爲小寫。 
String toString() 
          返回此對象本身(它已經是一個字符串!)。 
String toUpperCase() 
          使用默認語言環境的規則將此 String 中的所有字符都轉換爲大寫。 
String toUpperCase(Locale locale) 
          使用給定的 Locale 規則將此 String 中的所有字符都轉換爲大寫。 
String trim() 
          返回字符串的副本,忽略前導空白和尾部空白。 
static String valueOf(boolean b) 
          返回 boolean 參數的字符串表示形式。 
static String valueOf(char c) 
          返回 char 參數的字符串表示形式。 
static String valueOf(char[] data) 
          返回 char 數組參數的字符串表示形式。 
static String valueOf(char[] data, int offset, int count) 
          返回 char 數組參數的特定子數組的字符串表示形式。 
static String valueOf(double d) 
          返回 double 參數的字符串表示形式。 
static String valueOf(float f) 
          返回 float 參數的字符串表示形式。 
static String valueOf(int i) 
          返回 int 參數的字符串表示形式。 
static String valueOf(long l) 
          返回 long 參數的字符串表示形式。 
static String valueOf(Object obj) 
          返回 Object 參數的字符串表示形式。

發佈了24 篇原創文章 · 獲贊 7 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章