string.valueof和string 的區別 遇到錯誤才記憶深刻
在java專案的實際開發和應用中,常常需要用到將物件轉為String這一基本功能。本文將對常用的轉換方法進行一個總結。 常用的方法有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,但它們意義相同嗎? 以上是對object物件轉換為String的一些總結
相關推薦
string.valueof和string 的區別 遇到錯誤才記憶深刻
在java專案的實際開發和應用中,常常需要用到將物件轉為String這一基本功能。本文將對常用的轉換方法進行一個總結。 常用的方法有Object#toString(),(String)要轉換的物件,String.valueOf(Object)等。 下面對這
Java| String.valueOf和Integer.toString的區別
示例程式碼: int i = 4; String i1 = "" + i; //String i1 = (new StringBuilder()).append(i).toString(); String i2 = String.valueOf(i);
轉載:string.IsNullOrEmpty和string.IsNullOrWhiteSpace方法的區別
char ace length string pty div isn 如果 使用 string.IsNullOrEmpty():判斷字符串是否為null或者為string.Empty,如果是"\t"這樣的字符就返回false,為了達到判斷過濾這些功能,就要使用Trim()和
JAVA中string.replace()和string.replaceAll()的區別及用法
mod btn dsm ont match cep 產生 生成 語法 乍一看,字面上理解好像replace只替換第一個出現的字符(受javascript的影響),replaceall替換所有的字符,其實大不然,只是替換的用途不一樣。 public Strin
Java中String字符串toString()、String.valueOf()、String強轉、+ ""的區別
builder arc span 但是 內容 end hello 部分 exception Object#toString(): Object object = getObject(); System.out.println(object.toString());
string.IsNullOrEmpty和string.IsNullOrWhiteSpace方法的區別
using 選擇性 功能 pos display clas msdn 如果 trim 由於原來一直都沒註意到這兩個方法,一直使用string.IsNullOrEmpty,當看到string.IsNullOrWhiteSpace時,而且在微軟人員開發的項目中經常使用時才註意到
String,StringBuilder和StringBuffer區別及使用場景
面試中常常會遇到這樣的問題:1、你瞭解String類嗎?2、String,StringBuilder和StringBuffer適合在什麼樣的場景下使用? 1、String類 首先看一下Strin
Java中實現String.padLeft和String.padRight
toc 還要 color for 失去 1-1 arraycopy ace pre 因為習慣了C#中的padLeft和padRight,接觸Java後突然失去這兩個功能,覺得別扭,就試著實現了這兩個方法。 Java中String.format()中帶有字符串對齊功能如下
C#實戰小技巧(九):List<string>和string[]的相互轉換
List是string型別列表,string[]是string型別陣列,二者可以互相轉換。 1.string[]轉List string[] strArray = {"a", "ab", "abc"}; List<string> strList = new List<s
型別轉換toString( )、String.valueOf( )與(String)Data
toString和(String)的區別 toString( ) 每個非基本型別物件都有toString()方法,當編譯器需要一個String型別,而你只有一個物件時,該方法會被呼叫。 Object類的toString()方法返回的字串形式:類名[emai
用java String類的getBytes(String charsetName)和String(byte[] bytes, String charsetName)解決亂碼問題
Java中String的資料是如何儲存的,檢視原始碼就可以知道,String的資料是儲存在char[] value這樣一個成員變數中的,char型別的大小在java中是2個位元組 我們還知道,現在普遍使用的unicode版本是UCS-2,就是使用2個位元組表示一個字元的unicode版本,這就對上了,java
深入分析String.intern和String常量的實現原理
背景 字串型別在實際應用場景中使用非常頻繁,如果為每個字串常量都生成一個對應的String物件,明顯會造成記憶體的浪費,針對這一
String轉long、Long.valueOf() 和 Long.parseLong()區別
1、java中如何將 string 轉化成 long 方法1: long l = Long.valueOf("String"); 方法2: long l = Lo
String.valueOf(object)和object.toString()的區別
假設有個物件object,如果object不是null,那麼兩者是沒啥區別的。但是如果object是null,對於String.valueOf(object)返回的是null(從原始碼可以看出,已經對o
java中對於字串 XX.toString和String.valueOf()以及強制型別轉換的區別
今天在寫程式碼的時候遇到很多需要型別轉換的東西 ,特別是需要轉換到String型別。好幾次都報錯了,特此記錄一下這三者之間的區別 toString方法 先看一下API對toString方法的描述 返回該物件的字串表示。通常,toString 方法會返回一個“以文
toString()、new String()和(String) 、String.ValueOf()的區別
先來看段程式碼: String str="hello"; String base64Encoded=Hex.encodeToString(str.getBytes()); String str2=new String(Hex.decode(base64En
new BigDecimal(0.01) 與 new BigDecimal(String.valueOf(0.01))的區別 (轉)
賬單 rto sta egerp 存在 調整 nan com mod 轉自:http://blog.csdn.net/major1985/article/details/50210293 一般我們使用BigDecimal進行比較精密的計算,我這裏計算金額。註意使用d
String類和StringBuffer類的區別
單個 出了 字符串連接 字符 折扣 可變 ren 時間 nop 首先,String和StringBuffer主要有2個區別: (1)String類對象為不可變對象,一旦你修改了String對象的值,隱性重新創建了一個新的對象,釋放原String對象,StringBuffe
java.toString() ,(String),String.valueOf的區別
不同 容易 log exc ins 例子 pre val 錯誤 在Java項目的實際開發和應用中,常常需要用到將對象轉為String這一基本功能。本文將對常用的轉換方法進行一個總結。 常用的方法有Object#toString(),(String)要轉換的
java中String new和直接賦值的區別
字符串相同 main 基礎 還需 賦值 請問 常量 int 表達 Java中String new和直接賦值的區別 對於字符串:其對象的引用都是存儲在棧中的,如果是編譯期已經創建好(直接用雙引號定義的)的就存儲在常量池中,如果是運行期(new出來的)才能確定的