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

来源:互联网 发布:七了个三淘宝 编辑:程序博客网 时间:2024/05/18 01:44

首先看下面的代码:

    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。

原创粉丝点击