数组的赋值机制和赋值原理

对于数组的赋值机制,很多小伙伴们弄不懂其中原理,下面我来简单说一说数组的赋值机制。

1.首先来举个例子说明一下变量赋值的机制,其实就是简单地值拷贝。

 public class arraytest {
    public static void main(String[] args){

        int n1=10;
        int n2=n1;

        n2=80;
        System.out.println("n1="+n1);
        System.out.println("n2="+n2);
    }
}

这里n1赋值为10后,n1的值赋值给n2,n2现在为10,后来又将n2赋值为80,此时n1并不会因为n2的变化而变化。
在这里插入图片描述
2.现在来说一下数组的值传递是怎么样的。
其实数组的赋值是传递的地址,首先还是举个例子:

  		int arr1[]={1,2,3};
        int arr2[]=arr1;
        arr2[0]=10;

        for (int i = 0; i < arr1.length; i++) {
            System.out.println(arr1[i]);
        }

这里说明一下结果,遍历数组arr1后输出的分别是10, 2,3,此时有的人就会想了,我给arr2下标为0的地方赋值,关arr1什么事?arr1怎么会变呢?现在我就来解答一下疑惑,这是因为数组的赋值传递是引用传递。
在这里插入图片描述
用韩顺平老师的图来讲解以下。
在这里插入图片描述
这里的arr1和arr2相当于栈,而数组中的数据{1,2,3}就相当于与内存中的堆,arr1[]是指向{1,2,3}这个堆的,所以可以访问,当把arr1赋值给arr2时,arr2就具有了和arr1一样的访问权,因此对arr2的数据更改,会影响到arr1的数据。
如果还有人听不懂,那我就再举个很简单的例子,我们都玩过“我的世界”这款游戏。比如你和你的朋友一起玩,你的朋友做了一把木剑,放在了他自己的背包里,他又做了一个相同的木剑给了你,你们都有了木剑(这就相当于简单地值拷贝)。现在有一个箱子,你朋友做了一把木剑放在了箱子里,你觉得木剑太垃圾了,把木剑换成了钻石剑放在了箱子里,你朋友打开箱子发现木剑变成了钻石剑(这就是引用赋值)
我想到这里应该讲的也挺清楚的了,数组的赋值引用,变得是地址罢了。希望能够帮助到小伙伴们!!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值