字符串转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.. 那为什么不直接打印字符串呢。你知道string
和char 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数组,显示傻字符的主要内容,如果未能解决你的问题,请参考以下文章