这篇文章主要给大家介绍了关于javaSystem.out.println()输出byte[]、char[]异常问题的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看啊
前言
今天 突然有人问我他写的byte[]和char[],在用system.out.println()输出的时候所得的值有问题?
细思恐惧啊 我之前怎么没发现。。。。。。。。。。。。。。。。
废话不多说 代码如下/**
* @author:
* @date: 2019/1/9/00099:23
* @version 1.0
*/
public class arraytest {
public static void main(string[] args) {
//创建一个byte数组
byte[] b = {'a'};
//创建一个char数组
char[] c = {'a'};
//用system.out.println输出byte数组
system.out.println(b);//控制台输出 [b@7adf9f5f
//用system.out.println输出char数组
system.out.println(c);//控制台输出 a
}
} 由代码可以看出,使用system.out.println()byte数组和输出char数组所产生的不同,
输出byte数组 输出的是内存地址
输出char数组 输出的是数组的元素
原因是什么嘞·············????接着往下看。
查资料发现,system.out.println()是printstream类的成员方法,此方法只提供了以下几种数据类型的输出重载函数:--------------------------------------------------------------------------------------------------------------------
println()void没有返回值通过写入分隔符字符串来终止当前行
println(boolean x) void没有返回值打印一个布尔值,然后终止该行
println(char x) void没有返回值打印一个字符,然后终止该行
println(char[] x) void没有返回值打印一个字符数组,然后终止该行
println(double x) void没有返回值打印双精度浮点数,然后终止该行
println(float x) void没有返回值打印单精度浮点数,然后终止该行
println(int x) void没有返回值打印一个整数,然后终止该行
println(long x) void没有返回值打印long整数,然后终止该行
println(object x) void没有返回值打印一个对象,然后终止该行
println(string x) void没有返回值打印一个字符串,然后终止该行
----------------------------------------------------------------------------------------------------------------------- 由以上可以看出 我们在输出boolean、char、char[]、double、float、int、long、string 类型的数据,
会输出相应的值,对于object的输出,system.out.println()会先调用其tostring方法,然后会将该对象的tostring方法的返回值输出,
由于system.out.println()没有对int[]、string[]、byte[]、object[]、输出函数重载,所有在使用该方法输出这些数据类型时,该方法会将其中的参数
做数组首元素来对待,也就是说system.out.println(b);等价于system.out.println(b[0]);然后调用首元素的tostring方法,并将其输出。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对CodeAE代码之家的支持。
原文链接:http://www.cnblogs.com/jungejava/p/10242821.html
|