论坛首页 Java企业应用论坛

java 中数组是值类型还是引用类型。

浏览 8512 次
精华帖 (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:除了基本数据类型,其他的都是引用数据类型

或者其他说法!
   发表时间:2011-10-14  
java 中都是值应用,区别在于,int,long这些基本类型值在栈中,而对象类型值存在堆中
0 请登录后投票
   发表时间:2011-10-14  
413899327 写道

java 中数组是值类型还是引用类型。

Object o = new int[] {1,2,3};

观点1;数组类型是一族类型,它们都继承自System.Array,而System.Array又继承自System.Object。所有的数组类型都是引用类型。

观点2:看你的数组是用的类对象还是基本数据类型了
如果是值类型的数组,比如int[],那里面存的就是值类型。
引用类型,就存引用咯!

观点3:除了基本数据类型,其他的都是引用数据类型

或者其他说法!


2、3说的不是一回事
0 请登录后投票
   发表时间: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++中引用)
0 请登录后投票
   发表时间:2011-10-14  
数组只是定义了内存里一段连续的地址空间,里面放的都是值,值有两种,基本数据和引用,引用是地址的值,这个地址是堆里的类的地址,两个本身没有什么区别,因为一个数组初始化的时候已经规定了这一片内存空间存的是基本数据类型还是引用,编译器在取值的时候解析方式不同而已。这是我个人的理解,有错误的请指出。
0 请登录后投票
   发表时间:2011-10-14  
数组本身是对象,但数组里可以存值类型和引用类型
0 请登录后投票
   发表时间:2011-10-14  
shiyiyue513 写道
数组只是定义了内存里一段连续的地址空间,里面放的都是值,值有两种,基本数据和引用,引用是地址的值,这个地址是堆里的类的地址,两个本身没有什么区别,因为一个数组初始化的时候已经规定了这一片内存空间存的是基本数据类型还是引用,编译器在取值的时候解析方式不同而已。这是我个人的理解,有错误的请指出。



貌似我理解错楼主的意思了。。。。
0 请登录后投票
   发表时间:2011-10-15  
观点3是正确的。
0 请登录后投票
   发表时间:2011-10-15  
同楼上,观点3是对的。
0 请登录后投票
   发表时间:2011-10-15  
数组是类,不过既然是类,为什么编译后不会出现class文件呢,因为数组是直接由虚拟机创建的类,如果存放的是基本数据,则虚拟机创建的类名为“[int”、“[long”,如果存放的是对象的引用,对于字符串来说,则数组类名为“[Ljava.lang.String”,这是关于虚拟机的东西
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics