本帖最后由 kellyzyb 于 2013-10-17 14:56 编辑
重新做了下整理和分析,希望对你有用:
System.out是一个PrintStream对象,print(println同理) 方法有N个重载,其中一个是pting(Object obj),查询api文档,此方法先调用了一个String.valueOf(obj)方法。查看此方法的源码: 当obj不等于空于时,自动调用obj.toString()方法。- public static String valueOf(Object obj) {
- return (obj == null) ? "null" : obj.toString();
- }
复制代码 Object 类的 toString 方法返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于: getClass().getName() + '@' + Integer.toHexString(hashCode())
所以当要打印整数数组时,会自动查找类型相匹配的方法进行重载,当没有对应的方法时,作为Object来处理,加载此方法 public void println( Object x) 最终打印出在内存中的地址值。 当是字符型数组时,有对应的public void print(char[] s) 方法。打印出字符串。而其它数组没有单独定义方法,当作Object来处理。
|