java中关于字符数组的输出

    char[] str={'h','i'};
    System.out.println(str);//这里输出的是字符串hi
    System.out.println("str:"+str);//这里输出的是地址值,str:[C@5f184fc6

为什么第二种输出不是字符串,而是str的地址值,求解答!

调用了两个不同的重载方法,
第一个接收char[],直接输出内容
第二个接收String, 传参的过程中加号操作时, 第二个char[]用.toString()方法转化为“地址”。
按住Ctrl键,鼠标分别点击两个println,看看源代码就明白了。

可以参考这篇文章,讲的很详细: 关于System.out.println(str)打印的是字符串值,而不是地址的问题_yuxinganggame的博客-CSDN博客 Q:为什么会有这种问题呢?A:在我们没有学习Object类的toString方法前,我们打印引用类型对象名,打印出来的是地址值,那么String作为引用类型,打印的应该也是地址值呀.为什么它打印出来的就是字符串本身的值呢.代码举例:String str = "abc";System.out.println(str);输出结果:abc原因:我们首先要记住一个概念:在打印引用类... https://blog.csdn.net/yuxinganggame/article/details/105524649

第二种方法应该是输出数组的toString方法返回值吧

因为"str:"+str中,str会默认toString,str.toString()就是地址。另外System.out.println();有直接接收char[]数据类型的重载方法,可以直接输出字符数组。