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 ----------------------------------

 

转载于:https://www.cnblogs.com/jungejava/p/10242821.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java中可以作为参数传入System.out.println()方法,被直接打印的容器包括: 1. 字符串(String) 2. 字符数组char[]) 3. 布尔类型(boolean) 4. 整数类型(byte、short、int、long) 5. 浮点数类型(float、double) 除此之外,其他容器类型需要先转换为字符串类型才能作为参数传入System.out.println()方法被直接打印。例如,List、Map、Set等容器类型,可以使用toString()方法将其转换为字符串类型,然后作为参数传入System.out.println()方法被直接打印。 ### 回答2: 在Java中,可以将以下容器传递给`System.out.println()`方法进行直接打印: 1. 字符串(String):String类是Java中表示字符串的容器,可以直接将字符串传递给`System.out.println()`进行打印,例如:`System.out.println("Hello World");` 2. 字符串缓冲区(StringBuffer和StringBuilder):StringBuffer和StringBuilder类是可变的字符串容器,可以直接将它们的实例作为参数传递给`System.out.println()`进行打印。例如:`System.out.println(new StringBuffer("Hello"));` 3. 字符数组char[]):字符数组可以作为参数传递给`System.out.println()`进行打印。例如:`char[] array = {'H', 'e', 'l', 'l', 'o'}; System.out.println(array);` 4. 基本数据类型的包装类(Integer,Double,Boolean等):基本数据类型的包装类也可以作为参数传递给`System.out.println()`进行打印。例如:`System.out.println(new Integer(10));` 5. 其他容器的toString()方法返回的字符串:许多Java容器类都有一个`toString()`方法,该方法返回包含容器内容的字符串,这个字符串可以直接作为参数传递给`System.out.println()`进行打印。例如:`System.out.println(Arrays.toString(array));` 需要注意的是,以上容器作为参数传递给`System.out.println()`时,会自动调用相应容器的`toString()`方法来获取打印内容。如果想要自定义打印内容的格式,可以重写各自容器类的`toString()`方法。例如,重写`toString()`方法可以实现自定义打印格式:`System.out.println(array.toString());` ### 回答3: 在Java中,可以直接将字符串(String)作为参数传入System.out.println()方法被直接打印。这意味着我们可以将任何一个字符串直接打印到控制台,例如:"Hello World!"。 除了字符串,还可以将字符(char数组作为参数传入System.out.println()方法被直接打印。如下所示: char[] array = {'H', 'e', 'l', 'l', 'o'}; System.out.println(array); 这样就可以将字符数组直接打印到控制台。 此外,还可以将基本数据类型的变量作为参数传入System.out.println()方法被直接打印,如整数(int)、浮点数(float)、布尔值(boolean)等。例如: int num = 10; System.out.println(num); 上面的代码将会把整数变量num的值直接打印到控制台。 需要注意的是,虽然容器类型(如List、Set、Map等)不能直接作为参数传入System.out.println()方法被直接打印,但我们可以先将它们转化为字符串,然后再使用System.out.println()方法进行打印。例如: List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); System.out.println(list.toString()); 上面的代码将会把list的内容转化为字符串,并直接打印到控制台。 但需要注意的是,toString()方法的结果可能不如我们所期望,因此在遇到复杂的容器类型时,我们通常会使用其他的打印方式来输出容器的内容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值