为了账号安全,请及时绑定邮箱和手机立即绑定

为什么java中的toString方法似乎不适用于数组

为什么java中的toString方法似乎不适用于数组

慕的地6264312 2019-07-13 15:23:47
我希望使用java中的toString()方法将字符数组转换为String对象。下面是我使用的测试代码片段:import java.util.Arrays;class toString{     public static void main(String[] args){         char[] Array = {'a', 'b', 'c', 'd', 'e', 'f'};         System.out.println(Array.toString());         }}原则上,它应该打印ABCDEF,但它是印刷像…之类的随意胡言乱语。[C@6e1408或[C@e 53108]每次程序执行时。我不需要有别的选择,但我想知道为什么会这样。
查看完整描述

3 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

才能获得人类的可读性toString(),您必须使用Arrays.toString(),就像这样:

System.out.println(Arrays.toString(Array));

爪哇toString()数组的输出[,后面跟着一个表示数组元素类型的字符(在您的例子中)Cchar),然后是@然后是数组的“标识哈希码”(把它想象成一个“内存地址”)。

这种可悲的状况通常被认为是Java的“错误”。

看见这个答案其他“错误”列表。


查看完整回答
反对 回复 2019-07-13
?
神不在的星期二

TA贡献1963条经验 获得超6个赞

我不知道你从哪里得到“原则上”应该打印“ABCDEF”的想法。文件记录在哪里?

有点像[C@6e1408当然随机胡言乱语-与任何不覆盖的其他类型一样,从对象构造字符串的方式是一样的toString()Inherits-它是类型的表示([指示阵列;C指示char(原语类型)后面跟着十六进制的标识哈希代码。见文件Object.toString()关于细节。碰巧,数组不覆盖toString.

如果你想[a, b, c, d, e, f]你可以用Arrays.toString(char[])..如果你想abcdef你可以用new String(char[]).


查看完整回答
反对 回复 2019-07-13
?
呼如林

TA贡献1798条经验 获得超3个赞

数组不覆盖toString..有一个静态方法:java.util.Arrays.toString这应该能解决你的问题。

import java.util.Arrays;class toString {
    public static void main(String[] args){
        char[] Array = {'a', 'b', 'c', 'd', 'e', 'f'};
        System.out.println(Arrays.toString(Array));
    }}


查看完整回答
反对 回复 2019-07-13
  • 3 回答
  • 0 关注
  • 515 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号