字符串转char数组,显示傻字符

Posted

技术标签:

【中文标题】字符串转char数组,显示傻字符【英文标题】:string to char array, showing silly characters 【发布时间】: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

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

【问题讨论】:

预期输出是什么? 【参考方案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),你会看到你所期望的。

【讨论】:

以上是关于字符串转char数组,显示傻字符的主要内容,如果未能解决你的问题,请参考以下文章

C语言怎么将char数组字符串转到string类型中

Arduino String类型字符串转char数组

[转]char * 和字符数组

如何将char类型数组转换为unicode字符串

int数组和char数组的问题

arduino数据类型转换