java文件中 int[] ary = {4,5,6};
int[] ary1 = ary;
ary1[1]=8;
System.out.println(ary[1]);//8现问:1数组中元素值放在哪,是放在栈中吗,
2ary[1]为什么也会改呢,怎么会为8呢
int[] ary1 = ary;
ary1[1]=8;
System.out.println(ary[1]);//8现问:1数组中元素值放在哪,是放在栈中吗,
2ary[1]为什么也会改呢,怎么会为8呢
首先你自己定义死了一个数组int[] ary = {4,5,6};里面的值分别 4 、5 、6
如果你想再改数组里添加一个数组,你ary1[1]=8;当然不下标为1 的值“5”替换了改成为8,
如果你想把8插入里面,你可以自己在new 一个 长度大于3的数组, int] str=new String[4];
然后你吧自己的数组跟8往里面添加,就可以了,其次你说这些元素值放在哪里,当然是堆里面,因为数组时一个对象
ary[1]为什么也会改呢,怎么会为8呢 thanks
ary[1]为什么也会改呢,怎么会为8呢 thanks
ary[1]=ary1[1]
他们的值是相等的,你自己吧ary1[1]=8;
当然5替换成8了
ary指向堆内存中,ary只是引用,存在栈中,而ary[i]是开辟在堆内存中的。地址和值都在堆内存中。2、ary赋值给ary1是表示把ary1也是指向堆内存中,所以只要ary1[1]=8;ary和ary1都会跟着变的。讲个通俗点的例子,到你家可能有很多种方式,但是只要你家换位置了,这些方式都要改变。以上个人理解,互相讨论。
ary与ary1是数组的引用,在栈中。
int[] ary = {4,5,6};只是一种初始化方式,等价于int[] ary = new int[]{4,5,6};===>new出来的空间在堆里。
如果未初始化,会默认初始化为0(所有元素)。ary[1]为什么也会改呢?ary[1]类似于成员变量,为什么不能改呢?!!!
int[] ary = {4,5,6};
int[] ary1 = ary;
ary1[1]=8;
System.out.println(ary[1]);//8其中arr放在栈内存中,它内部含有一个值,是指向放在堆内存中的数据引用地址,
当你在int[] ary1 = ary;的时候就是把内存地址复制给了arr1,所以不管改变哪个引用中的值,都会影响到另外一个
是把5的值改成8了吗,
2 4,5,6 是一个对象吗,
------
| |
| |
|------|
|ary |
------
ary1[1]=8;
这个难道不是赋值吗?
4,5,6 放在数组里的,可以说是一个对象,可以说是三个不同的对象,这样看你怎么理解了,
在java中,所有都是对象,连一个类都是对象