javaSystem.out.println()輸出byte[]、char[]異常的問題詳析
前言
今天 突然有人問我他寫的byte[]和char[],在用System.out.println()輸出的時(shí)候所得的值有問題?
細(xì)思恐懼啊 我之前怎么沒發(fā)現(xiàn)。。。。。。。。。。。。。。。。
廢話不多說 代碼如下
/**
* @Author:
* @Date: 2019/1/9/00099:23
* @Version 1.0
*/
public class arrayTest {
public static void main(String[] args) {
//創(chuàng)建一個(gè)byte數(shù)組
byte[] b = {'a'};
//創(chuàng)建一個(gè)char數(shù)組
char[] c = {'a'};
//用System.out.println輸出byte數(shù)組
System.out.println(b);//控制臺(tái)輸出 [B@7adf9f5f
//用System.out.println輸出char數(shù)組
System.out.println(c);//控制臺(tái)輸出 a
}
}
由代碼可以看出,使用System.out.println()byte數(shù)組和輸出char數(shù)組所產(chǎn)生的不同,
輸出byte數(shù)組 輸出的是內(nèi)存地址
輸出char數(shù)組 輸出的是數(shù)組的元素
原因是什么嘞·············????接著往下看。
查資料發(fā)現(xiàn),System.out.println()是printStream類的成員方法,此方法只提供了以下幾種數(shù)據(jù)類型的輸出重載函數(shù):
--------------------------------------------------------------------------------------------------------------------
println() void 沒有返回值 通過寫入分隔符字符串來終止當(dāng)前行
println(boolean x) void 沒有返回值 打印一個(gè)布爾值,然后終止該行
println(char x) void 沒有返回值 打印一個(gè)字符,然后終止該行
println(char[] x) void 沒有返回值 打印一個(gè)字符數(shù)組,然后終止該行
println(double x) void 沒有返回值 打印雙精度浮點(diǎn)數(shù),然后終止該行
println(float x) void 沒有返回值 打印單精度浮點(diǎn)數(shù),然后終止該行
println(int x) void 沒有返回值 打印一個(gè)整數(shù),然后終止該行
println(long x) void 沒有返回值 打印long整數(shù),然后終止該行
println(Object x) void 沒有返回值 打印一個(gè)對(duì)象,然后終止該行
println(String x) void 沒有返回值 打印一個(gè)字符串,然后終止該行
-----------------------------------------------------------------------------------------------------------------------
由以上可以看出 我們?cè)谳敵鯾oolean、char、char[]、double、float、int、long、String 類型的數(shù)據(jù),
會(huì)輸出相應(yīng)的值,對(duì)于Object的輸出,System.out.println()會(huì)先調(diào)用其toString方法,然后會(huì)將該對(duì)象的toString方法的返回值輸出,
由于System.out.println()沒有對(duì)int[]、String[]、byte[]、Object[]、輸出函數(shù)重載,所有在使用該方法輸出這些數(shù)據(jù)類型時(shí),該方法會(huì)將其中的參數(shù)
做數(shù)組首元素來對(duì)待,也就是說System.out.println(b);等價(jià)于System.out.println(b[0]);然后調(diào)用首元素的toString方法,并將其輸出。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
springboot druid mybatis多數(shù)據(jù)源配置方式
這篇文章主要介紹了springboot druid mybatis多數(shù)據(jù)源配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
使用JAXBContext輕松實(shí)現(xiàn)Java和xml的互相轉(zhuǎn)換方式
這篇文章主要介紹了依靠JAXBContext輕松實(shí)現(xiàn)Java和xml的互相轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Java畢業(yè)設(shè)計(jì)實(shí)戰(zhàn)之工作管理系統(tǒng)的實(shí)現(xiàn)
這是一個(gè)使用了java+SSM+Jsp+Mysql開發(fā)的工作干活管理系統(tǒng),是一個(gè)畢業(yè)設(shè)計(jì)的實(shí)戰(zhàn)練習(xí),具有管理系統(tǒng)該有的所有功能,感興趣的朋友快來看看吧2022-02-02
Maven中兩個(gè)命令clean 和 install的使用
Maven是一個(gè)項(xiàng)目管理和自動(dòng)構(gòu)建工具,clean命令用于刪除項(xiàng)目中由先前構(gòu)建生成的target目錄,install命令用于將打包好的jar包安裝到本地倉(cāng)庫中,供其他項(xiàng)目依賴使用,下面就來詳細(xì)的介紹一下這兩個(gè)命令2024-09-09
java編程之AC自動(dòng)機(jī)工作原理與實(shí)現(xiàn)代碼
這篇文章主要介紹了java編程之AC自動(dòng)機(jī)的有關(guān)內(nèi)容,涉及其應(yīng)用場(chǎng)景,運(yùn)行原理,運(yùn)行過程,構(gòu)造方法及Java中的實(shí)現(xiàn)代碼,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11

