【问题标题】:Converting a character array to a string [duplicate]将字符数组转换为字符串[重复]
【发布时间】:2014-01-17 03:27:49
【问题描述】:

为什么 toString 方法返回乱码?

char[] arrays = {'a','b','c'};
  { a, b, c }
arrays.toString()
  "[C@6519ceb1"

【问题讨论】:

  • 是的,这是从 char 数组返回的默认 toString()。相反,System.out.println(java.util.Arrays.toString(arrays));
  • new String(char[])String.valueOf(char[]) 没有帮助?
  • 顺便说一句,如果它有效,它不会打印我假设你期望的abc(参考你的问题标题),它会打印[a, b, c]
  • 嗯,Mad的评论必须是隐形墨水。 ;)

标签: java


【解决方案1】:

您看到的是数组对象的字符串表示形式为Object。 (toString() 对于所有对象的默认行为是打印对象引用的表示。您不能覆盖数组的该行为。)要获得数组的 contents 的字符串表示,您需要将字符数组传递给String 构造函数:

char[] arrays = {'a','b','c'};
String s = new String(arrays); // "abc"

或(取决于您要完成的任务)使用

String s = java.util.Arrays.toString(arrays); // "[a,b,c]"

【讨论】:

  • +1,但不应该是array 而不是arrays? (尽管 OP 可能编码了什么?)
  • 在这种情况下,他没有得到一个字符串(比如一个词),他得到的是一个数组的字符串解释,这似乎不是他想要的?
  • @Bohemian - OP 的原始代码命名为数组arrays;我就是这么想的。就个人而言,我会将这样一个数组命名为不那么令人困惑的名称(例如 theArraytheChars)。
  • @developercorey - 我不知道 OP 想要什么,只是他不想要默认的 toString() 行为。 (顺便说一句,使用new String(arrays) 将产生与您的代码完全相同的输出。)
  • @Bohemian 你指的是java.util.Arrays.toString吗?我相信是arrays
【解决方案2】:
char[] arrays = {'a','b','c'};
System.out.println(Arrays.toString(arrays));

这是使用 java.util.Arrays 可以找到实现

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Arrays.java#Arrays.toString%28java.lang.Object%5B%5D%29

默认使用 Object 类的 toString 实现

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 2021-08-20
    • 1970-01-01
    相关资源
    最近更新 更多