javaSystem.out.println()輸出byte[]、char[]異常的問題詳析
前言
今天 突然有人問我他寫的byte[]和char[],在用System.out.println()
輸出的時候所得的值有問題?
細思恐懼啊 我之前怎么沒發(fā)現(xiàn)。。。。。。。。。。。。。。。。
廢話不多說 代碼如下
/** * @Author: * @Date: 2019/1/9/00099:23 * @Version 1.0 */ public class arrayTest { public static void main(String[] args) { //創(chuàng)建一個byte數(shù)組 byte[] b = {'a'}; //創(chuàng)建一個char數(shù)組 char[] c = {'a'}; //用System.out.println輸出byte數(shù)組 System.out.println(b);//控制臺輸出 [B@7adf9f5f //用System.out.println輸出char數(shù)組 System.out.println(c);//控制臺輸出 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 沒有返回值 打印一個布爾值,然后終止該行
println(char x) void 沒有返回值 打印一個字符,然后終止該行
println(char[] x) void 沒有返回值 打印一個字符數(shù)組,然后終止該行
println(double x) void 沒有返回值 打印雙精度浮點數(shù),然后終止該行
println(float x) void 沒有返回值 打印單精度浮點數(shù),然后終止該行
println(int x) void 沒有返回值 打印一個整數(shù),然后終止該行
println(long x) void 沒有返回值 打印long整數(shù),然后終止該行
println(Object x) void 沒有返回值 打印一個對象,然后終止該行
println(String x) void 沒有返回值 打印一個字符串,然后終止該行
-----------------------------------------------------------------------------------------------------------------------
由以上可以看出 我們在輸出boolean、char、char[]、double、float、int、long、String 類型的數(shù)據(jù),
會輸出相應(yīng)的值,對于Object的輸出,System.out.println()
會先調(diào)用其toString方法,然后會將該對象的toString方法的返回值輸出,
由于System.out.println()
沒有對int[]、String[]、byte[]、Object[]、輸出函數(shù)重載,所有在使用該方法輸出這些數(shù)據(jù)類型時,該方法會將其中的參數(shù)
做數(shù)組首元素來對待,也就是說System.out.println(b);
等價于System.out.println(b[0]);
然后調(diào)用首元素的toString方法,并將其輸出。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
相關(guān)文章
Hadoop集成Spring的使用詳細教程(快速入門大數(shù)據(jù))
這篇文章主要介紹了Hadoop集成Spring的使用詳細教程(快速入門大數(shù)據(jù)),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01通過IEAD+Maven快速搭建SSM項目的過程(Spring + Spring MVC + Mybatis)
這篇文章主要介紹了通過IEAD+Maven快速搭建SSM項目的過程(Spring + Spring MVC + Mybatis),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01Springboot集成Elasticsearch的步驟與相關(guān)功能
ElasticSearch是開源搜索平臺領(lǐng)域的一個新成員,?ElasticSearch是一個基于Lucene構(gòu)建的開源,分布式,RESTful搜索引擎,這篇文章主要給大家介紹了關(guān)于Springboot集成Elasticsearch的相關(guān)資料,需要的朋友可以參考下2021-12-12適用于Java初學(xué)者的學(xué)習(xí)路線圖
這篇文章主要介紹了學(xué)習(xí)Java的路線圖的五個必經(jīng)階段,還有一些作者的想法分享給大家,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-09-09