多个引用类型的变量“引用”同一个对象意味着什么

         首先看下面的代码:

         package com.heima.vo;
         public class Test
         {
                  public static void main(String[] args) {
                              int array1 []=new int[]{1,2};//标记1
                              int array2 []=array1;//标记2
                              array2[1]=100;//标记3
                              System.out.println("array1[1]="+array1[1]);//标记4    

                  }
         }

        如果执行了上面的代码会输出什么?array1[1]=2还是array1[1]=100?

        原因:当代码执行到标记1的时候,array1处于栈空间中,new出来的数组存在于堆空间中;array1引用了new出来的数组的内存地址。

                   当代码执行到标记2的时候,array2处于栈空间中,array2也引用了new出来的数组的内存地址,即array1和array2均引用了new出来的数组的内存地址,至此出现了多个数组类型的变量“引用”同一个数组对象。

                   当代码执行到标记3的时候,堆空间中数组对象的第二个元素开始变为100。

                   当代码执行到标记4的时候,由于两个变量引用同一个数组对象所以结果为array1[1]=100。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿老高

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值