开发者社区> 问答> 正文

toString获取的为什么是地址值而且使用Arrays.toString()获取的长度不对

知者为师! 在此请教各位老师一个问题,(这个问题已经百度过,但没有找到对应的答案)如下: 今天解决力扣算法题的时候自己发现的一个从来没有仔细研究的问题 先上关键代码 char[] c = str.toCharArray();//该字符数组中有7个字符 str = c.toString(); str1 = Arrays.toString(c); System.out.println( str.length()); //返回str的长度是11 System.out.println("str= " + str); //直接打印str输出的是地址值[C@15db9742 System.out.println( str1.length()); //返回str1的长度是18 System.out.println("str1= " + str1); //直接打印str1输出的是str1= [9, 0, 1, 0, 0, 0] 问题如下: 1.为什么直接使用str = c.toString();后打印str的值获取的是一个地址值? 2.为什么使用str1 = Arrays.toString(c);后打印str1的长度是18?这18位的长度是7个字符加11位地址值吗? 3.直接使用c.toString();和 Arrays.toString(c);有什么区别?

展开
收起
海边一只船 2020-05-31 17:31:47 995 0
1 条回答
写回答
取消 提交回答
  • str = c.toString() 在Java中c数组也是一个对象,该对象继承了Object,但是没有重写(override)Object类中的toString方法,所以根据对象的多态性,c.toString()调用的是Object类中的toString方法,参考源码如下: JDK源码中的Object类的toString方法 public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }

    2020-05-31 17:31:55
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载