Java中toString()、String.valueOf、(String)強(qiáng)轉(zhuǎn)區(qū)別
一、前言
相信大家在日常開(kāi)發(fā)中這三種方法用到的應(yīng)該很多,尤其是前兩種,經(jīng)常在開(kāi)發(fā)的時(shí)候,隨心所欲,想用哪個(gè)用哪個(gè),既然存在,那就應(yīng)該有它存在的道理,那么什么情況下用哪個(gè)呢?
二、代碼實(shí)例
1、基本類(lèi)型
(1)基本類(lèi)型沒(méi)有toString()方法
(2)推薦使用
(3)無(wú)法強(qiáng)轉(zhuǎn)
(String)是標(biāo)準(zhǔn)的類(lèi)型轉(zhuǎn)換,將Object類(lèi)型轉(zhuǎn)為String類(lèi)型,使用(String)強(qiáng)轉(zhuǎn)時(shí),最好使用instanceof做一個(gè)類(lèi)型檢查,以判斷是否可以進(jìn)行強(qiáng)轉(zhuǎn),否則容易拋出ClassCastException異常。需要注意的是編寫(xiě)的時(shí)候,編譯器并不會(huì)提示有語(yǔ)法錯(cuò)誤,所以這個(gè)方法要謹(jǐn)慎的使用。
instanceof判斷
2、封裝類(lèi)型
(1)toString ok
(2)String.valueOf()
自然也是可以的。
(3)封裝類(lèi)型也無(wú)法強(qiáng)轉(zhuǎn)
3、null值問(wèn)題
(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類(lèi)里已有public方法.toString(),所以java對(duì)象都可以調(diào)用此方法。但在使用時(shí)要注意,必須保證object不是null值,否則將拋出NullPointerException異常。采用這種方法時(shí),通常派生類(lèi)會(huì)覆蓋Object里的toString()方法。
2、String.valueOf(),推薦使用,返回字符串“null”
String.valueOf()方法是小編推薦使用的,因?yàn)樗粫?huì)出現(xiàn)空指針異常,而且是靜態(tài)的方法,直接通過(guò)String調(diào)用即可,只是有一點(diǎn)需要注意,就是上面提到的,如果為null,String.valueOf()返回結(jié)果是字符串“null”。而不是null。
3、(String)強(qiáng)轉(zhuǎn),不推薦使用
(String)是標(biāo)準(zhǔn)的類(lèi)型轉(zhuǎn)換,將Object類(lèi)型轉(zhuǎn)為String類(lèi)型,使用(String)強(qiáng)轉(zhuǎn)時(shí),最好使用instanceof做一個(gè)類(lèi)型檢查,以判斷是否可以進(jìn)行強(qiáng)轉(zhuǎn),否則容易拋出ClassCastException異常。需要注意的是編寫(xiě)的時(shí)候,編譯器并不會(huì)提示有語(yǔ)法錯(cuò)誤,所以這個(gè)方法要謹(jǐn)慎的使用。
到此這篇關(guān)于Java中toString()、String.valueOf、(String)強(qiáng)轉(zhuǎn)區(qū)別的文章就介紹到這了,更多相關(guān)Java中toString()、String.valueOf、(String)強(qiáng)轉(zhuǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot+Maven 多模塊項(xiàng)目的構(gòu)建、運(yùn)行、打包實(shí)戰(zhàn)
這篇文章主要介紹了SpringBoot+Maven 多模塊項(xiàng)目的構(gòu)建、運(yùn)行、打包實(shí)戰(zhàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-05-05springboot實(shí)現(xiàn)簡(jiǎn)單的消息對(duì)話的示例代碼
本文主要介紹了springboot實(shí)現(xiàn)簡(jiǎn)單的消息對(duì)話的示例代碼,可以使用WebSocket技術(shù),WebSocket是一種在客戶(hù)端和服務(wù)器之間提供實(shí)時(shí)雙向通信的協(xié)議,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09Spring mvc整合mybatis(crud+分頁(yè)插件)操作mysql
這篇文章主要介紹了Spring mvc整合mybatis(crud+分頁(yè)插件)操作mysql的步驟詳解,需要的朋友可以參考下2017-04-04MySQL中drop、truncate和delete的區(qū)別小結(jié)
在MySQL數(shù)據(jù)庫(kù)管理中,常常需要執(zhí)行刪除數(shù)據(jù)的操作,本文主要介紹了MySQL中drop、truncate和delete的區(qū)別小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2024-04-04詳解SpringBoot定時(shí)任務(wù)說(shuō)明
本篇文章主要介紹了詳解SpringBoot定時(shí)任務(wù)說(shuō)明,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03IDEA自定義setter和getter格式的設(shè)置方法
這篇文章主要介紹了IDEA自定義setter和getter格式的設(shè)置方法,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),需要的朋友參考下吧2023-12-12Java中使用同步回調(diào)和異步回調(diào)的示例詳解
這篇文章主要介紹了Java中使用同步回調(diào)和異步回調(diào)的相關(guān)資料,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04