Java中的引用

void main() {
    int[] a1 = {1,2,3,4,5};
    int[] a2;
    a2 = a1;
    for (int i=0;i<a2.length;i++){
        a2[i] += i;
    }
    for (int a:a1){
       print(a + " ");
    }
} /* Output:
1 3 5 7 9 
*///~
什么是引用?

  引用其实就像是一个对象的名字或者别名。一个对象在内存中会请求一块空间来保存数据,根据对象的大小,它可能需要占用的空间大小也不等。访问对象的时候,我们不会直接访问对象在内存中的数据,而是通过引用去访问。引用也是一种数据类型,我们可以把它想象为类似 C/C++ 语言中指针的东西,它指示了对象在内存中的地址——只不过我们不能够观察到这个地址究竟是什么。与之不同的是,C/C++的引用是同一块内存的不同名字,而Java的引用是指向一个对象,引用本身也占用了内存。
  对于基本数据类型来说,对象的引用,其实是在内存中新开辟了一个空间,把原对象的值放进新开辟的内存空间中。
  对于其他数据类型来说,对象的引用,其实是把新对象指向原对象的内存地址,两个对象共用一个内存空间。
  所以在上述代码中,数组不是基本数据类型,所以a1和a2指向了同一个内存空间,所以对其中任何一个进行更改,都会改变另一个的值。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容