char[]中的Java toString方法



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

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

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

这个代码k.toString()到底发生了什么?

我永远不应该在char数组中调用toString方法吗?

谢谢!

新年快乐!

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


您可以使用

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

请参阅javadoc

公共字符串(char[]值)分配一个新字符串,以便表示当前包含在字符数组参数。字符数组的内容如下复制;字符数组的后续修改不会影响新创建的字符串。参数:value-字符串

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

对数组调用toString将从Object调用toString方法。这将返回您的hashCode

public String to String()返回对象通常,toString方法返回一个字符串"文本表示"这个对象。结果应该是简洁但易于阅读的信息性表述。是的建议所有子类重写此方法。toStringObject类的方法返回一个字符串,该字符串由对象是其实例的类,at符号字符"@",以及对象换句话说,此方法返回一个等于的值:

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

因为数组是对象。因此,调用toString()结果来调用从对象类继承的toString()方法,即:

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

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

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

这个代码k.toString()到底发生了什么?我永远不应该在char数组中调用toString方法吗?

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

您可能永远不应该对任何类型的数组调用toString。Arrays类有许多用于创建数组的字符串表示的实用方法。

这个问题的部分答案是:"这个代码k.toString()到底发生了什么?">

toString()是从java.lang.Object继承的,没有被重写。实现只打印规范类名加上@字母加上散列代码。仅此而已。因此,调用此方法对应用程序没有用处,只是为了在IDE中进行调试,以便至少了解对象的类型。

字符串可以采用char数组作为构造函数。

String s = new String(k);

最新更新