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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 宋旭东 中级黑马   /  2013-7-3 19:43  /  1642 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Object a = new int[]{1,2};
Object b = new String[]{"a","b"};
Object[] c = new int[]{1,2};//编译报错
Object[] d = new String[]{"a","b"};

为什么String数组付给Object对象和Object[]  都可以呢?

5 个回复

倒序浏览
String可以算一个类对象,String[]也可以算一个类对象,基本数据类型比如int不算一个类对象,但是int[]就算一个类对象。
所以String[] 数组赋给Object时 是将String[]整体看做一个对象赋给Object
String[] 数组赋给Object[] 数组时,是将String[]数组中的每个元素赋给Object[]数组中的每个元素,因为String类本身就是从Object继承过来的
而Int[] 数组中装的都是基本类型,不能把每个元素看成一个对象,所以只能将int[]数组整体看成一个对象。
回复 使用道具 举报
liujkh123 发表于 2013-7-4 15:19
String可以算一个类对象,String[]也可以算一个类对象,基本数据类型比如int不算一个类对象,但是int[]就算 ...

额。。。。类对象  这个名词。。。我感觉换成引用类型能好点。。。。。。
回复 使用道具 举报

Object[]  在内存中是如何分配的?   int[] 类型在栈内存中只分配一个地址,他指向堆内存的所有变量,而Object[] 应该是在栈内存分配一个变量,然后在堆内存
分配很懂的Object 引用  ,然后每个引用再指向所赋予的值,我的想法是这样的。。
回复 使用道具 举报
1.int 只是基本类型,不能算是对象
2.数组int[],String[],char[],byte[] 都属于一个对象,你看集合类也可以是一个对象吧。
3.String (字符串)是一个对象的。
4。Object[] d = new String[]{"a","b"}; 你写这里,是把里面的元素看成对象,根据3,也可以编译通过吧。
5.根据1,Object[] c = new int[]{1,2};//编译报错 是当然的,但你可以看看基本类型的对象 int--->Integer
  1. Object[] c = new Integer[]{1,2};
复制代码
能够通过的,因为Integer属于对象。
回复 使用道具 举报
zhou5852 发表于 2013-7-12 20:33
Object[]  在内存中是如何分配的?   int[] 类型在栈内存中只分配一个地址,他指向堆内存的所有变量,而Ob ...

  看完 后面他发的帖子  我有种被骗的感觉。。。。。。。额  我再也不回这种帖子了  没意思。。。。。。。。。。。。。。。。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马