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方法去除字符串中的标点,符号和数字?