• System.out.println()输出byte[]和char[]异常的问题


    //创建一个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方法,并将其输出。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    JSON序列化时消除空格
    appium测试准备记录
    计算器的单元测试dome
    using关键字在C#中的3种用法
    VxWorks多任务功能
    VS2008与MATLAB R2007a混合编程配置过程
    MATLAB和C语言混合编程-----Matlab7.0 编译器设置
    C++虚函数与纯虚函数用法与区别(转载)
    printf("%f ", 3);输出结果为什么是0.000000(转载)
    浮点型数据在内存中存储的表示(转载)
  • 原文地址:https://www.cnblogs.com/name-lizonglin/p/14614242.html
Copyright © 2020-2023  润新知