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

我希望使用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]每次程序执行时。我不需要有别的选择,但我想知道为什么会这样。


慕的地6264312
浏览 516回答 3
3回答

qq_笑_17

才能获得人类的可读性toString(),您必须使用Arrays.toString(),就像这样:System.out.println(Arrays.toString(Array));爪哇toString()数组的输出[,后面跟着一个表示数组元素类型的字符(在您的例子中)C为char),然后是@然后是数组的“标识哈希码”(把它想象成一个“内存地址”)。这种可悲的状况通常被认为是Java的“错误”。看见这个答案其他“错误”列表。

神不在的星期二

我不知道你从哪里得到“原则上”应该打印“ABCDEF”的想法。文件记录在哪里?有点像[C@6e1408当然不随机胡言乱语-与任何不覆盖的其他类型一样,从对象构造字符串的方式是一样的toString()Inherits-它是类型的表示([指示阵列;C指示char(原语类型)后面跟着十六进制的标识哈希代码。见文件Object.toString()关于细节。碰巧,数组不覆盖toString.如果你想[a, b, c, d, e, f]你可以用Arrays.toString(char[])..如果你想abcdef你可以用new String(char[]).

呼如林

数组不覆盖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));     }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java