A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 翼展哈哈 于 2013-12-9 16:57 编辑

首先提供一段非常简单的代码:
  1. int[] arr = new int[3]{1,2,3};
  2. System.out.println(arr);
复制代码


这段代码应该没什么问题的。我今儿在查看System类out字段的println方法时,发现println提供的重载方法有:
void println()
          通过写入行分隔符字符串终止当前行。
void println(boolean x)
          打印 boolean 值,然后终止行。
void println(char x)
          打印字符,然后终止该行。
void println(char[] x)
          打印字符数组,然后终止该行。
void println(double x)
          打印 double,然后终止该行。
void println(float x)
          打印 float,然后终止该行。
void println(int x)
          打印整数,然后终止该行。
void println(long x)
          打印 long,然后终止该行。
void println(Object x)
          打印 Object,然后终止该行。
void println(String x)
          打印 String,然后终止该行。
您看,上述那段简单代码,传给println方法的参数arr是int[]型的,但是所有的重载方法的形参中并没有int[]型!我想这应该涉及到多态的问题吧,很有可能代码中arr传递给了void println(Object x)方法,那这是不是说明int[]型是object的子类?请指教~~~

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

4 个回复

倒序浏览
当然是的,这个时候调用的是int数组对象的toString方法
回复 使用道具 举报
Weix1992 发表于 2013-12-9 16:43
当然是的,这个时候调用的是int数组对象的toString方法

thank you!
回复 使用道具 举报
这个你要记住毕老师曾经说过Object是所有类的上帝,显然int就是上帝的儿子。{:soso_e144:}
回复 使用道具 举报
Object 类是所有类的父类,所以Object 引用可以指向任意对象,
有一个情况不行
int[] arr=new int[];
Object[] obj=arr;
这样是不行的

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马