char []中的Java toString方法[重复]

Posted

技术标签:

【中文标题】char []中的Java toString方法[重复]【英文标题】:Java toString method in char[] [duplicate] 【发布时间】:2014-01-19 07:38:46 【问题描述】:

我以为 toString 方法会将一个 char 数组变成一个字符串,但我错了。

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

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

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

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

谢谢!

新年快乐!

【问题讨论】:

当你输入你的问题的标题时,它会弹出几个已经回答过这个问题的现有问题,然后它们会再次列在此屏幕的右侧 数组上的 toString 正在返回数组的内存地址。这就是你所展示的 【参考方案1】:

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

String s = new String(k);

【讨论】:

What exactly happened in this code k.toString()? Should I never call toString method in a char array? 这不能回答这两个问题。 这不会编译。 为什么出于兴趣投反对票? 可能是因为我在用 python 思考并省略了 new 运算符。我的错。固定。 目前尚不清楚这是否是 OP 真正想要的,也没有回答为什么 toString() 在数组上调用时会执行其操作。【参考方案2】:

你想使用 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 toString() 返回一个字符串表示 目的。通常,toString 方法返回一个字符串 “文字地表示”这个对象。结果应该简洁但 易于阅读的信息表示。它是 建议所有子类重写此方法。 toString 类 Object 的方法返回一个包含对象名称的字符串 对象是实例的类,at-sign 字符“@”, 和哈希码的无符号十六进制表示 目的。换句话说,这个方法返回一个字符串等于 价值:

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

【讨论】:

What exactly happened in this code k.toString()? Should I never call toString method in a char array? 这两个问题都没有回答 这假设用户想要 "['k', 'k']" 作为输出。如果他们想要“kk”,那么他们需要使用带有 char 数组的 String 构造函数。【参考方案3】:

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

【讨论】:

【参考方案4】:

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

toString() 继承自 java.lang.Object 并且没有被覆盖。该实现只打印规范的类名加上@字母加上哈希码。就这些。因此,调用此方法对应用程序没有用处,仅用于 IDE 中的调试目的,以至少了解存在哪种类型的对象。

【讨论】:

【参考方案5】:

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

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

【讨论】:

【参考方案6】:

因为数组是对象。所以调用toString()结果调用继承自对象类的toString()方法是:

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

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

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

【讨论】:

以上是关于char []中的Java toString方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

java中怎么用toString方法去除字符串中的标点,符号和数字?

char []到C#中的字符串[重复]

Integer.toString(char) 的相反方法 [重复]

Java中的toString()方法

Java中的 toString 方法

java中的toString如何用