首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

数组中元素值放在哪

2012-07-29 
数组中元素值放在哪,在线等java文件中int[] ary {4,5,6}int[] ary1 aryary1[1]8System.out.printl

数组中元素值放在哪,在线等
java文件中

 int[] ary = {4,5,6};
  int[] ary1 = ary;
  ary1[1]=8;
  System.out.println(ary[1]);//8

现问:1数组中元素值放在哪,是放在栈中吗,
   2ary[1]为什么也会改呢,怎么会为8呢

[解决办法]
放在堆中, ary1、ary才是放在占中,ary1、ary指向堆中的同一个地址,也就是放{4,5,6}的地址;
[解决办法]

首先你自己定义死了一个数组int[] ary = {4,5,6};里面的值分别 4 、5 、6
如果你想再改数组里添加一个数组,你ary1[1]=8;当然不下标为1 的值“5”替换了改成为8,
如果你想把8插入里面,你可以自己在new 一个 长度大于3的数组, int] str=new String[4];
然后你吧自己的数组跟8往里面添加,就可以了,其次你说这些元素值放在哪里,当然是堆里面,因为数组时一个对象
[解决办法]

探讨

ary1[1]=8;
ary[1]为什么也会改呢,怎么会为8呢 thanks

[解决办法]
1、可以这样写个,int[] ary = new int[3];int[] ary = {4,5,6};
ary指向堆内存中,ary只是引用,存在栈中,而ary[i]是开辟在堆内存中的。地址和值都在堆内存中。

2、ary赋值给ary1是表示把ary1也是指向堆内存中,所以只要ary1[1]=8;ary和ary1都会跟着变的。

讲个通俗点的例子,到你家可能有很多种方式,但是只要你家换位置了,这些方式都要改变。

以上个人理解,互相讨论。
[解决办法]
java中:万物皆对象。数组也不例外
ary与ary1是数组的引用,在栈中。
int[] ary = {4,5,6};只是一种初始化方式,等价于int[] ary = new int[]{4,5,6};===>new出来的空间在堆里。
如果未初始化,会默认初始化为0(所有元素)。ary[1]为什么也会改呢?ary[1]类似于成员变量,为什么不能改呢?!!!
[解决办法]
数组是引用类型滴,不同的变量名指向同一个地址,内容改变了,不管哪个变量来引用,结果都是8
[解决办法]
引用数据类型
[解决办法]
存储数据的地方你可以理解为两个地方,一个是栈、一个是堆。
Java code
int[] ary = {4,5,6};  int[] ary1 = ary;  ary1[1]=8;  System.out.println(ary[1]);//8
[解决办法]
其实可以画个图来解决 ,假设ary的地址是6000,然后你写int ary1=ary,相当于把ary1的地址也赋成6000,然后你改变了其中的值,也就是说6000这个地址对应的内容发生了改变,那么你再读ary时,当然读的是6000这个地址对应的内容了啊
------
| |
| |
|------|
|ary |
------
[解决办法]
探讨
1 ary1[1]=8;
是把5的值改成8了吗,
2 4,5,6 是一个对象吗,

热点排行
Bad Request.