黑马程序员技术交流社区

标题: object与数组问题 [打印本页]

作者: 宋旭东    时间: 2013-7-3 19:43
标题: object与数组问题
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[]  都可以呢?
作者: liujkh123    时间: 2013-7-4 15:19
String可以算一个类对象,String[]也可以算一个类对象,基本数据类型比如int不算一个类对象,但是int[]就算一个类对象。
所以String[] 数组赋给Object时 是将String[]整体看做一个对象赋给Object
String[] 数组赋给Object[] 数组时,是将String[]数组中的每个元素赋给Object[]数组中的每个元素,因为String类本身就是从Object继承过来的
而Int[] 数组中装的都是基本类型,不能把每个元素看成一个对象,所以只能将int[]数组整体看成一个对象。
作者: zhou5852    时间: 2013-7-12 20:05
liujkh123 发表于 2013-7-4 15:19
String可以算一个类对象,String[]也可以算一个类对象,基本数据类型比如int不算一个类对象,但是int[]就算 ...

额。。。。类对象  这个名词。。。我感觉换成引用类型能好点。。。。。。
作者: zhou5852    时间: 2013-7-12 20:33

Object[]  在内存中是如何分配的?   int[] 类型在栈内存中只分配一个地址,他指向堆内存的所有变量,而Object[] 应该是在栈内存分配一个变量,然后在堆内存
分配很懂的Object 引用  ,然后每个引用再指向所赋予的值,我的想法是这样的。。

作者: 在乎..    时间: 2013-7-12 21:05
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 21:34
zhou5852 发表于 2013-7-12 20:33
Object[]  在内存中是如何分配的?   int[] 类型在栈内存中只分配一个地址,他指向堆内存的所有变量,而Ob ...

  看完 后面他发的帖子  我有种被骗的感觉。。。。。。。额  我再也不回这种帖子了  没意思。。。。。。。。。。。。。。。。。。。。。。。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2