首页 > 代码库 > 关于字符数组cs.toString和new String(cs)的问题
关于字符数组cs.toString和new String(cs)的问题
做Leetcode,345. Reverse Vowels of a String
思路完全正确,结果却一直不对
System.out.print(cs.toString);
还是奇奇怪怪的结果
像:[C@15db9742或者[C@15db9742等等
改成 System.out.print(new String(cs));就对了
首先:明确toString()是Object类的方法,所以所有类创建的时候都有这个方法并能够调用
同时:java输出用的函数print();是不接受对象直接输出的,只接受字符串或者数字之类的输出。
当System.out.print(XXXX); 当XXXX不是字符串或者数字的时候,此时可以编译成功,
但是运行时因为不满足条件,就会去调用这个对象类里面的toString 方法,输出结果为[类型@哈希值]
所以,不管有没有XXX.toString(),何况还特意toString()了
看一下Object里面toString()源码
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
正如前面出现的问题,由于数组类中没有对此方法重写(override),仅仅是重载(overload)为类的静态方法(参见java.util.Arrays)。
所以,数组直接使用toString()的结果也是[类型@哈希值]。
****最终****
三种方式数组转化字符串
char[] cs={‘a‘,‘b‘,‘c‘,‘d‘};
Array.toString(cs);-------这种是[a,b,d,d]这种格式的 String.valueOf(cs); String str=new String(cs); ---------这种就是很正常的 abcd 的了
关于字符数组cs.toString和new String(cs)的问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。