小白必看toString(),String.valueOf,(String)強(qiáng)轉(zhuǎn)
一、前言
相信大家在日常開發(fā)中這三種方法用到的應(yīng)該很多,尤其是前兩種,經(jīng)常在開發(fā)的時(shí)候,隨心所欲,想用哪個(gè)用哪個(gè),既然存在,那就應(yīng)該有它存在的道理,那么什么情況下用哪個(gè)呢?
二、代碼實(shí)例
1、基本類型
(1)基本類型沒有toString()方法

(2)推薦使用

(3)無法強(qiáng)轉(zhuǎn)

(String)是標(biāo)準(zhǔn)的類型轉(zhuǎn)換,將Object類型轉(zhuǎn)為String類型,使用(String)強(qiáng)轉(zhuǎn)時(shí),最好使用instanceof做一個(gè)類型檢查,以判斷是否可以進(jìn)行強(qiáng)轉(zhuǎn),否則容易拋出ClassCastException異常。需要注意的是編寫的時(shí)候,編譯器并不會(huì)提示有語法錯(cuò)誤,所以這個(gè)方法要謹(jǐn)慎的使用。

instanceof判斷

2、封裝類型
(1)toString ok

(2)String.valueOf()
自然也是可以的。
(3)封裝類型也無法強(qiáng)轉(zhuǎn)

3、null值問題
(1)toString()報(bào)空指針異常

(2)String.valueOf()返回字符串“null”

(3)null值強(qiáng)轉(zhuǎn)成功

三、源碼分析
1、toString()


2、String.valueOf()

String.valueOf()比toString多了一個(gè)非空判斷。
四、總結(jié)
1、toString(),可能會(huì)拋空指針異常
在這種使用方法中,因?yàn)閖ava.lang.Object類里已有public方法.toString(),所以java對(duì)象都可以調(diào)用此方法。但在使用時(shí)要注意,必須保證object不是null值,否則將拋出NullPointerException異常。采用這種方法時(shí),通常派生類會(huì)覆蓋Object里的toString()方法。
2、String.valueOf(),推薦使用,返回字符串“null”
String.valueOf()方法是小編推薦使用的,因?yàn)樗粫?huì)出現(xiàn)空指針異常,而且是靜態(tài)的方法,直接通過String調(diào)用即可,只是有一點(diǎn)需要注意,就是上面提到的,如果為null,String.valueOf()返回結(jié)果是字符串“null”。而不是null。
3、(String)強(qiáng)轉(zhuǎn),不推薦使用
(String)是標(biāo)準(zhǔn)的類型轉(zhuǎn)換,將Object類型轉(zhuǎn)為String類型,使用(String)強(qiáng)轉(zhuǎn)時(shí),最好使用instanceof做一個(gè)類型檢查,以判斷是否可以進(jìn)行強(qiáng)轉(zhuǎn),否則容易拋出ClassCastException異常。需要注意的是編寫的時(shí)候,編譯器并不會(huì)提示有語法錯(cuò)誤,所以這個(gè)方法要謹(jǐn)慎的使用。
到此這篇關(guān)于小白必看toString(),String.valueOf,(String)強(qiáng)轉(zhuǎn)的文章就介紹到這了,更多相關(guān)toString(),String.valueOf,(String)強(qiáng)轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot+Shiro學(xué)習(xí)之密碼加密和登錄失敗次數(shù)限制示例
本篇文章主要介紹了SpringBoot+Shiro學(xué)習(xí)之密碼加密和登錄失敗次數(shù)限制示例,可以限制登陸次數(shù),有興趣的同學(xué)可以了解一下。2017-03-03
JAVA編程實(shí)現(xiàn)TCP網(wǎng)絡(luò)通訊的方法示例
這篇文章主要介紹了JAVA編程實(shí)現(xiàn)TCP網(wǎng)絡(luò)通訊的方法,簡(jiǎn)單說明了TCP通訊的原理并結(jié)合具體實(shí)例形式分析了java實(shí)現(xiàn)TCP通訊的步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
Springboot升級(jí)到2.7.2結(jié)合nacos遇到的坑及解決
這篇文章主要介紹了Springboot升級(jí)到2.7.2結(jié)合nacos遇到的坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
Java面試題沖刺第三十天--數(shù)據(jù)庫(6)
這篇文章主要為大家分享了最有價(jià)值的三道關(guān)于數(shù)據(jù)庫的面試題,涵蓋內(nèi)容全面,包括數(shù)據(jù)結(jié)構(gòu)和算法相關(guān)的題目、經(jīng)典面試編程題等,感興趣的小伙伴們可以參考一下2021-09-09
java不同版本在多線程中使用隨機(jī)數(shù)生成器的實(shí)現(xiàn)
本文主要介紹了java不同版本在多線程中使用隨機(jī)數(shù)生成器的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
Spring Boot整合MyBatis-Plus實(shí)現(xiàn)CRUD操作的示例代碼
本文主要介紹了Spring Boot整合MyBatis-Plus實(shí)現(xiàn)CRUD操作,可以快速實(shí)現(xiàn)數(shù)據(jù)庫的增刪改查操作,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-04-04
關(guān)于Java集合框架Collection接口詳解
這篇文章主要介紹了關(guān)于Java集合框架Collection接口詳解,Collection接口是Java集合框架中的基礎(chǔ)接口,定義了一些基本的集合操作,包括添加元素、刪除元素、遍歷集合等,需要的朋友可以參考下2023-05-05

