javaSystem.out.println()输出byte[]和char[]异常的问题
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方法,并将其输出。
---------------------------------- end ----------------------------------
javaSystem.out.println()输出byte[]和char[]异常的问题的更多相关文章
- byte与char的区别
byte 是字节数据类型 ,是有符号型的,占1 个字节:大小范围为-128—127 .char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 ):大小范围 是0—65535 :char ...
- java乱码详解(java中byte与char的转换)
转自:http://hi.baidu.com/%C6%F3%D2%B5%BC%D2%D4%B0/blog/item/825a4858d6248e8b810a181a.html java byte与 ...
- Java数据类型之byte、char
Java 有8中基本数据类型,分别是byte.int.long.char.float.double.boolean. 1.byte.char的简单介绍 有时候总是搞不清byte.char,所以就现在好 ...
- Java之byte、char和String类型相互转换
package basictype; /** * byte.char和String类型相互转换 */ public class CHJavaType { public static void main ...
- Java中基本数据类型byte,short,char,int,long,float,double 取值范围
部分内容转自:java 彻底理解 byte char short int float long double 首先说byte: 这段是摘自jdk中 Byte.java中的源代码: /** * A co ...
- C# byte[]与char[]、string与char[]、byte[] 与 string 互转
1. byte array -> char array Byte[] b=new byte[5]{0x01,0x02,0x03,0x04,0x05}; Char[] c=Encoding.AS ...
- C# byte 和 char 转化
C# byte 和 char 可以认为是等价的.但是在文本显示的时候有差异. c# 使用的是unicode字符集,应该和为ascii相互转换 只能转换到字符的unicode编码,或者由unico ...
- Java 中byte 与 char 的相互转换 Java基础 但是很重要
char转化为byte: public static byte[] charToByte(char c) { byte[] b = new byte[2]; b[0] = ...
- bit,byte,char,位,字节,字符 的区别
bit,byte,char,位,字节,字符 的区别 原创文章,未经作者允许,禁止转载!!!
随机推荐
- Sample-Code:Bing Search API
Demo link: http://code.msdn.microsoft.com/windowsazure/How-to-use-bing-search-API-4c8b287e Aspx Code ...
- CentOS71611部署Django
web.conf <VirtualHost *:> WSGIScriptAlias / /var/www/datacn/datacn/wsgi.py Alias /static/ /var ...
- PowerShell 如何 远程连接【转】
转自: 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://bobzy.blog.51cto.com/2109336/1181249 ...
- PHP中使用CURL之php curl详细解析和常见大坑
这篇文章主要介绍了PHP中使用CURL之php curl详细解析和常见大坑 ,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 七夕啦,作为开发,妹子没得撩就“撩”下服务器吧,妹子有得撩的同学 ...
- 洛谷 P4568 [JLOI2011]飞行路线
题目描述 Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有一定的 ...
- dotnet体系结构
一.C#与.NET的关系 1.粗略地説,.net是一种在Windows平台上的编程架构————一种API. 2.C#编译器专门用于.net,这表示用C#编写的所有代码总是使用.NET Framewor ...
- 【DP】【单调队列】洛谷 P2216 [HAOI2007]理想的正方形 题解
算是单调队列的复习吧,不是很难 题目描述 有一个$a\times b$的整数组成的矩阵,现请你从中找出一个$n\times n$的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入 ...
- leetcode 88 Merge Sorted Array 归并排序
归并排序:先将数组一分为二,将左边部分排序(同样将其一分为二),再将右边部分排序,最后逐层归并.(分治策略)(稳定排序). 算法稳定性 -- 假设在数列中存在a[i]=a[j],若在排序之前,a[i] ...
- python数据结构与算法之list
1. 数据结构的操作 作为一种包含元素的数据结构,需要提供一些“标准”操作: 创建和销毁 判断是否空,如果容量有限,还需判断是否满 向结构中加入元素或从中删除 访问结构里的元素 不同的编程语言可能影响 ...
- java语言的各种输入情况-ACM
1.只输入一组数据: Scanner s=new Scanner(System.in);int a=s.nextInt();int b=s.nextInt(); 2.输入有多组数据,没有说明输入几组数 ...