请教一个java数组问题

wangbo1204 2008-03-25 06:57:55
请教:
1,
在书上看到:
对象数组保存的是引用 基本类型数组直接保存基本类型的值是什么意思
2,以前别人告诉我:int[]a = new int[3]; new int[3] 是在堆中分配了3个int类型的空间 “int[]a” 是在堆栈中分配了一个和“new int[3]”同样大小的空间 a指向了“new int[3]”假如a[1]=0;则堆中的和“a[1]”对应的那块空间的值也存储0 这样对吗
谢谢
...全文
171 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Fenglee2008 2008-04-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 java2000_net 的回复:]
1 基本类型如1楼所说,他们可以用一个简单的内存单元保存,比如int, 既然变量自己已经可以保存这个数据,何必再指向另一个地方呢?
2 int[]a 是分配了一个变量引用,不是一个空间。 它指向了 new int[3] 的那个地址。
[/Quote]

感觉3楼的回答2好像有点不妥,int []a=new int[3]应该是直接在栈上分配三个数据单元用于存储数据。和int a,b,c本质上没有区别,个人理解,欢迎拍砖!
左师佑图 2008-04-10
  • 打赏
  • 举报
回复

3楼对
ariesying 2008-04-10
  • 打赏
  • 举报
回复
楼上的,你说的是c++
J_Factory 2008-04-10
  • 打赏
  • 举报
回复
今天看书也看到了类似的东西,我的理解是当用new int[3]这种基本数据类型是会分配内存空间,而声名对象数组时只会得到一个引用数字,还需要生成实例,这个数组才有实体
贝壳鱼 2008-04-09
  • 打赏
  • 举报
回复
int[] a = new int[3];

// 声明一个可以存放int基本类型的一维数组a, 将a这个数组初始化为长度为3, 每个元素的初始换值为0

Image[] imgs = new Image[3];

// 如果是一个存放对象引用的数组, 那么这样初始化后,虽然对数组初始化了,但是每个元素的初始化是为NULL
DL88250 2008-04-09
  • 打赏
  • 举报
回复
1. 如LS
2. 对
h273166784 2008-04-09
  • 打赏
  • 举报
回复
原始的分配在栈上
引用的在堆上
这是个原则 对不 楼下的
老紫竹 2008-03-26
  • 打赏
  • 举报
回复
1 基本类型如1楼所说,他们可以用一个简单的内存单元保存,比如int, 既然变量自己已经可以保存这个数据,何必再指向另一个地方呢?
2 int[]a 是分配了一个变量引用,不是一个空间。 它指向了 new int[3] 的那个地址。
healer_kx 2008-03-25
  • 打赏
  • 举报
回复


a: type=int[] //Maybe Stack if declared as an auto variable, In heap if a member in a class.
|
|______[0] [1] [2] : type = int, In Heap.
yuzou45 2008-03-25
  • 打赏
  • 举报
回复
基本类型就是指 byte short int long float double boolean char

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧