把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(", "); } }