char[] c = {'1', '2'};
System.out.println(c);
System.out.println(c + "");
Output:
debug进行源码分析:System.out.println(c);
public void println(char x[]) {
synchronized (this) {
print(x);
newLine();
}
}
public void print(char s[]) {
write(s);
}
System.out.println(c + "");
public StringBuilder() {
super(16);
}
AbstractStringBuilder(int capacity) {
value = new char[capacity];
}
public StringBuilder append(Object obj) {
return append(String.valueOf(obj));
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
总结
public void println(char x[]) {
synchronized (this) {
print(x);
newLine();
}
}
public void print(char s[]) {
write(s);
}
public StringBuilder() { super(16); }AbstractStringBuilder(int capacity) { value = new char[capacity]; }public StringBuilder append(Object obj) { return append(String.valueOf(obj));public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); }public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); }
因为运算符【+】的存在,且操作数之一为String(""),导致调用了Object类(char[]属于Objectl类?存疑)的toString方法,返回了class名和hash值,而非字符
遗留问题System.out.println(c.toString());
的确跳转到了Object类的toString,getClass().getName()返回了【[C】
[C是什么类?char[]吗?


![【JAVA】char[]的输出,以及对char[]是否为一个类的疑惑 【JAVA】char[]的输出,以及对char[]是否为一个类的疑惑](http://www.mshxw.com/aiimages/31/985316.png)
