【问题标题】:string to char array, showing silly characters字符串转char数组,显示傻字符
【发布时间】:2012-11-30 08:28:18
【问题描述】:

这是一个非常简单的问题,但我需要另一只眼睛来查看我的代码:

String strtr = "iNo:";
char[] queryNo = strtr.toCharArray();
System.out.println(queryNo + " =this is no");

输出是:

[C@177b4d3 =this is no

这些字符是什么,你有什么想法

【问题讨论】:

  • 预期输出是什么?

标签: java arrays string char to-char


【解决方案1】:

这就是toString() 对数组的实现方式。

[C 表示它是一个字符数组,177b4d3 是它的哈希码。

你可能想看看

System.out.println(Arrays.toString(queryNo) + " =this is no");

如果你想再次看到原来的字符串,你需要这个:

System.out.println((new String(queryNo)) + " =this is no");

【讨论】:

  • 那你说这正常吗?我不应该看到“iNo =this is no”吗?我需要看到我在开始时声明的刺痛
  • @hassasin.. 那为什么不直接打印字符串呢。你知道stringchar array 是两个不同的东西吧?
  • 非常感谢。我得到了这些: [i, N, o, :] =this is no iNo: =this is original no 所以我有正确的 char 数组,但是当我想打印这个 char 数组时,我应该使用 tostring 或 new String,对吗?
  • toString() 会给你你所拥有的,new String() 你想要的。
【解决方案2】:

数组不会覆盖 toString(),它是继承自 Object.toString 的

public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

【讨论】:

    【解决方案3】:

    你正在打印对象

    queryno,因为queryno 是一个维度的字符数组,而java 是一种面向对象的语言,它以类的形式保存所有事物,它给出了类名 [C 到您的数组,其中[ 表示总维度C 表示数组的字符类型Rest哈希码 对象。

    【讨论】:

      【解决方案4】:

      您正在尝试打印 array,这就是您出现乱码的原因。尝试使用Arrays.toString(queryNo),你会看到你所期望的。

      【讨论】:

        猜你喜欢
        • 2012-07-25
        • 2018-07-04
        • 1970-01-01
        • 1970-01-01
        • 2019-08-04
        • 1970-01-01
        • 2013-04-25
        • 2012-11-04
        • 2014-08-13
        相关资源
        最近更新 更多