把char 数组中的内容打印出来:
Object类具有一个toString()方法,你创建的每个类都会继承该方法。它返回对象的一个String表示,并且对于调试非常有帮助。然而对于默认的toString()方法往往不能满足需求,需要覆盖这个方法。
public class Test
{
public static void main(String[] args)
{
char[] someArray = { 'J', 'A', 'V', 'A' };
System.out.println(someArray.toString());
}
}
结果并不如预想那样,打印出JAVA,结果是”[C@24c21495″。
看toString的源码:
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
函数返回一个字符串,这其中包含::类名+@+哈希值的16进制形式
- toHexString(int i)方法:
以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式
返回对象的字符串形式的地址值。对我们来说没有任何意义;所以通常情况,我们都会重写该方法;
或者用:
1) System.out.println(new String(someArray));
2) System.out.println(String.valueOf(someArray));都可以
因为 String.valueOf()的源码为:
public static String valueOf(char data[]) { return new String(data); }
代码示例:
import java.util.Arrays;
public class demo {
public static void main(String[] args) {
int [] arr={3,4,5,6,7};
System.out.println(Arrays.toString(arr)) ;
}
}
Arrays.toString()的源码为:分析可知,对toString()进行了重写,生成字符串[3,4,5,6,7]
注意:可以看源码,转化的字符串由”[", "a[i]",", "以及']' 组成。
public static String toString(int[] a) {
if (a == null)
return "null";
int iMax = a.length - 1;
if (iMax == -1)
return "[]";
StringBuilder b = new StringBuilder();
b.append('[');
for (int i = 0; ; i++) {
b.append(a[i]);
if (i == iMax)
return b.append(']').toString();
b.append(", ");
}
}
参考:https://blog.csdn.net/zhuyu_deng/article/details/8723762
Java的默认toString()方法返回的对象表示对开发者来说意义不大,常常需要重写。文章介绍了当打印charArray.toString()时得到的是内存地址,而非预期内容。建议使用System.out.println(new String(someArray))或String.valueOf(someArray)来获得期望的字符串表示,并解释了这些方法的工作原理。同时提到了Arrays.toString()方法如何生成格式化的数组字符串。

1036

被折叠的 条评论
为什么被折叠?



