char []中的Java toString方法

时间:2014-01-01 20:45:47

标签: java tostring arrays

我认为toString方法会将一个char数组生成一个String,但我错了。

    char[] k=new char[2];
    k[0]='k';
    k[1]='k';
    System.out.println(k.toString());

此代码将输出:[C @ 112f614。

这段代码k.toString()究竟发生了什么?

我是不是应该在char数组中调用toString方法?

谢谢!

新年快乐!

6 个答案:

答案 0 :(得分:3)

你想使用Arrays.toString(char [] {'a','b'});


您可以使用

char data[] = {'a', 'b', 'c'};
     String str = new String(data);

参见javadoc

  

public String(char [] value)   分配一个新的String以便它   表示当前包含的字符序列   字符数组参数。字符数组的内容是   复制;后续修改字符数组不会影响   新创建的字符串。参数:value - 的初始值   串

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html

在数组上调用toString将从Object调用toString方法。这将返回hashCode

  

public String toString()返回的字符串表示形式   宾语。通常,toString方法返回一个字符串   “文字表示”这个对象。结果应该是简洁但是   信息表达,便于人们阅读。它是   建议所有子类都重写此方法。 toString   类Object的方法返回一个由名称组成的字符串   对象是实例的类,符号字符“@”,   和哈希码的无符号十六进制表示   宾语。换句话说,此方法返回一个等于的字符串   价值:

     

getClass()。getName()+'@'+ Integer.toHexString(hashCode())
  返回:对象的字符串表示。

答案 1 :(得分:2)

因为数组是对象。所以调用toString()结果来调用从对象类中删除的toString()方法:

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

[C@112f614中,[C表示它是一个char数组。

如果要打印阵列的内容,请使用Arrays.toString(char[] a)

答案 2 :(得分:1)

  

这段代码k.toString()究竟发生了什么?我是不是应该在char数组中调用toString方法?

char数组的toString方法从Object继承默认的toString行为,它只是打印从对象在内存中的位置派生的唯一标识符。因此,除非你想要那个唯一标识符,否则调用k.toString()没有多大意义。 (k是你的char数组)

答案 3 :(得分:0)

你可能永远不会在任何类型的数组上调用toString。 Arrays类有许多用于创建数组的字符串表示的实用方法。

答案 4 :(得分:0)

对这个问题的部分答案:“这段代码k.toString()究竟发生了什么?”

toString()继承自java.lang.Object而未被覆盖。该实现只打印规范类名称加上@ -letter加上哈希码。就这些。因此,调用此方法对应用程序没有用,仅用于IDE中的调试目的,至少可以启发哪种类型的对象。

答案 5 :(得分:-3)

String可以将char数组作为构造函数。

String s = new String(k);