首頁 Java java教程 Java中valueOf和toString,(String)之間的區別

Java中valueOf和toString,(String)之間的區別

May 25, 2017 pm 02:53 PM

      在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 ));//是字串“null

System.out.println(null);//是空值null
#我們看到的輸出將是一模一樣的東西:null,但它們意義相同嗎?

相關推薦】

 1. 

詳解java 中valueOf方法實例

2. 

Java中valueOf,parseInt,toString三者的差異

3. 

valueOf函數與toString方法深入理解

4. 

object轉換函數toString()與valueOf()介紹

5. 

用toString()方法傳回時間為字串#

以上是Java中valueOf和toString,(String)之間的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

c#多線程和異步的區別 c#多線程和異步的區別 Apr 03, 2025 pm 02:57 PM

多線程和異步的區別在於,多線程同時執行多個線程,而異步在不阻塞當前線程的情況下執行操作。多線程用於計算密集型任務,而異步用於用戶交互操作。多線程的優勢是提高計算性能,異步的優勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務性質:計算密集型任務使用多線程,與外部資源交互且需要保持 UI 響應的任務使用異步。

char與wchar_t在C語言中的區別 char與wchar_t在C語言中的區別 Apr 03, 2025 pm 03:09 PM

在 C 語言中,char 和 wchar_t 的主要區別在於字符編碼:char 使用 ASCII 或擴展 ASCII,wchar_t 使用 Unicode;char 佔用 1-2 個字節,wchar_t 佔用 2-4 個字節;char 適用於英語文本,wchar_t 適用於多語言文本;char 廣泛支持,wchar_t 依賴於編譯器和操作系統是否支持 Unicode;char 的字符範圍受限,wchar_t 的字符範圍更大,並使用專門的函數進行算術運算。

C語言 sum 的作用是什麼? C語言 sum 的作用是什麼? Apr 03, 2025 pm 02:21 PM

C語言中沒有內置求和函數,需自行編寫。可通過遍歷數組並累加元素實現求和:循環版本:使用for循環和數組長度計算求和。指針版本:使用指針指向數組元素,通過自增指針遍歷高效求和。動態分配數組版本:動態分配數組並自行管理內存,確保釋放已分配內存以防止內存洩漏。

c語言函數的基本要求有哪些 c語言函數的基本要求有哪些 Apr 03, 2025 pm 10:06 PM

C語言函數是代碼模塊化和程序搭建的基礎。它們由聲明(函數頭)和定義(函數體)組成。 C語言默認使用值傳遞參數,但也可使用地址傳遞修改外部變量。函數可以有返回值或無返回值,返回值類型必須與聲明一致。函數命名應清晰易懂,使用駝峰或下劃線命名法。遵循單一職責原則,保持函數簡潔性,以提高可維護性和可讀性。

c和c#的區別和聯繫有哪些 c和c#的區別和聯繫有哪些 Apr 03, 2025 pm 10:36 PM

C和C#雖有類似之處,但截然不同:C是面向過程、手動內存管理、平台依賴的語言,用於系統編程;C#是面向對象、垃圾回收、平台獨立的語言,用於桌面、Web應用和遊戲開發。

JavaScript中如何從指定DOM節點下使用XPath進行查找? JavaScript中如何從指定DOM節點下使用XPath進行查找? Apr 04, 2025 pm 11:15 PM

DOM節點下XPath查找方法詳解在JavaScript中,我們經常需要根據XPath表達式從DOM樹中查找特定的節點。如果需要從某�...

char和unsigned char的區別是什麼 char和unsigned char的區別是什麼 Apr 03, 2025 pm 03:36 PM

char 和 unsigned char 是存儲字符數據的兩種數據類型,主要區別在於處理負數和正數的方式:值範圍:char 有符號 (-128 到 127),unsigned char 無符號 (0 到 255)。負數處理:char 可以存儲負數,unsigned char 不能。位模式:char 最高位表示符號,unsigned char 無符號位。算術運算:char 和 unsigned char 作為有符號和無符號類型,其算術運算方式不同。兼容性:char 和 unsigned char

c 多線程三種實現方式的區別是什麼 c 多線程三種實現方式的區別是什麼 Apr 03, 2025 pm 03:03 PM

多線程是計算機編程中的重要技術,用來提升程序執行效率。在 C 語言中,有多種實現多線程的方式,包括線程庫、POSIX 線程和 Windows API。

See all articles