今天做练习遇到了这样的问题
// 随机生成一组验证码,得到的是一个字符数组
String str = "shdkd";
char[] ch = str.toCharArray();
// 想要与输入的字符串对比的话就需要将他转化为字符串
System.out.println(ch.toString());//[C@626b2d4a
得到了这个[C@626b2d4a
后面查了一下
在Java中,每一个对象的toString方法,都会打印出“类名@他的hashCode值”这样的一个字符串,数组是“[”这个符号,C就代表char,@后面的就是这个数组的hashCode值
所以想要得到字符串的话用toString方法是行不通的
看了网友的一些方法,下面进行总结
String st = Arrays.toString(ch);
System.out.println(st);//[s, h, d, k, d]
得到的结果为
[s, h, d, k, d]
这并不是想要的结果状态
想要单纯的输出字符串的话,可以利用字符串的构造方法来接收字符数组
st = new String(ch);
System.out.println(st);//shdkd
或者用包装类逐个转为字符串进行拼接
st = new String();
for(int i=0;i<ch.length;i++) {
st += Character.toString(ch[i]);
}
System.out.println(st);
大家如果有什么问题欢迎留言进行交流,谢谢大家
文章讨论了在Java中如何将字符数组转换为字符串的问题,指出使用`toString`方法会返回类名和哈希码,而不是预期的字符串内容。解决方案包括使用`Arrays.toString`方法或通过构造函数以及`Character.toString`进行逐个字符转换。
1万+





