锁定老帖子 主题:java 中数组是值类型还是引用类型。
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-13
java 中数组是值类型还是引用类型。 Object o = new int[] {1,2,3}; 观点1;数组类型是一族类型,它们都继承自System.Array,而System.Array又继承自System.Object。所有的数组类型都是引用类型。 观点2:看你的数组是用的类对象还是基本数据类型了 如果是值类型的数组,比如int[],那里面存的就是值类型。 引用类型,就存引用咯! 观点3:除了基本数据类型,其他的都是引用数据类型 或者其他说法! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-10-14
java 中都是值应用,区别在于,int,long这些基本类型值在栈中,而对象类型值存在堆中
|
|
返回顶楼 | |
发表时间:2011-10-14
413899327 写道 java 中数组是值类型还是引用类型。 Object o = new int[] {1,2,3}; 观点1;数组类型是一族类型,它们都继承自System.Array,而System.Array又继承自System.Object。所有的数组类型都是引用类型。 观点2:看你的数组是用的类对象还是基本数据类型了 如果是值类型的数组,比如int[],那里面存的就是值类型。 引用类型,就存引用咯! 观点3:除了基本数据类型,其他的都是引用数据类型 或者其他说法! 2、3说的不是一回事 |
|
返回顶楼 | |
发表时间:2011-10-14
ustcter 写道 413899327 写道 java 中数组是值类型还是引用类型。 Object o = new int[] {1,2,3}; 观点1;数组类型是一族类型,它们都继承自System.Array,而System.Array又继承自System.Object。所有的数组类型都是引用类型。 观点2:看你的数组是用的类对象还是基本数据类型了 如果是值类型的数组,比如int[],那里面存的就是值类型。 引用类型,就存引用咯! 观点3:除了基本数据类型,其他的都是引用数据类型 或者其他说法! 2、3说的不是一回事 1、2、3 说的都不是一回事 数据是对象,持有对象的是引用/弱化的指针(非C++中引用) |
|
返回顶楼 | |
发表时间:2011-10-14
数组只是定义了内存里一段连续的地址空间,里面放的都是值,值有两种,基本数据和引用,引用是地址的值,这个地址是堆里的类的地址,两个本身没有什么区别,因为一个数组初始化的时候已经规定了这一片内存空间存的是基本数据类型还是引用,编译器在取值的时候解析方式不同而已。这是我个人的理解,有错误的请指出。
|
|
返回顶楼 | |
发表时间:2011-10-14
数组本身是对象,但数组里可以存值类型和引用类型
|
|
返回顶楼 | |
发表时间:2011-10-14
shiyiyue513 写道 数组只是定义了内存里一段连续的地址空间,里面放的都是值,值有两种,基本数据和引用,引用是地址的值,这个地址是堆里的类的地址,两个本身没有什么区别,因为一个数组初始化的时候已经规定了这一片内存空间存的是基本数据类型还是引用,编译器在取值的时候解析方式不同而已。这是我个人的理解,有错误的请指出。
貌似我理解错楼主的意思了。。。。 |
|
返回顶楼 | |
发表时间:2011-10-15
观点3是正确的。
|
|
返回顶楼 | |
发表时间:2011-10-15
同楼上,观点3是对的。
|
|
返回顶楼 | |
发表时间:2011-10-15
数组是类,不过既然是类,为什么编译后不会出现class文件呢,因为数组是直接由虚拟机创建的类,如果存放的是基本数据,则虚拟机创建的类名为“[int”、“[long”,如果存放的是对象的引用,对于字符串来说,则数组类名为“[Ljava.lang.String”,这是关于虚拟机的东西
|
|
返回顶楼 | |