• Java中关于引用的概念澄清


    Java当中的新的引用类型创建时,需要慎重赋值其他引用类型

    例如已有引用类型int a[][] = {{1,4},{1,1}};
      System.out.println(a[0][0]);
    结果为1

    而当创建一个新的引用类型int b[][] = a;

    新的引用类型b并不会单纯复制a的内容而新建句柄,而是引用类型a和b共享相同的缓存区,其句柄相同,当对任意a或b进行修改时,

    都会影响另一个引用变量

    如对b进行修改:

    b[0][0] = 0后

    System.out.println(a[0][0]);

    输出结果为0

    原来的a[][] = {{1,4},{1,1}}已经借由b句柄修改成了{{0,4},{1,1}}

    但同时,如果只是修改了b的句柄,则a的句柄并不会随之变化,

    如假设新建int c[][] = {{3,3},{3,3}};

    b = c后,System.out.println(a[0][0]);并不会输出3

    而是仍然输出1

    原因在于虽然在a = b后,a与b共享了相同的缓冲区,拥有的句柄也相同,但是除此之外,它们本质上仍然是两个引用变量,当其中一方的引用对象发生变化时,并不会使得另一方的引用对象也发生变化,a与b两个引用变量是相等而独立的

  • 相关阅读:
    CCNode作为容器实现显示区域剪裁
    使用CCNode作为容器容易踩的坑
    走了很多弯路的CCScrollView
    常用es6特性归纳-(一般用这些就够了)
    WebP图片优化
    es6 Promise 异步函数调用
    网站性能优化
    dom元素分屏加载
    js顺序加载与并行加载
    移动端真机调试
  • 原文地址:https://www.cnblogs.com/J14nWe1/p/9857028.html
Copyright © 2020-2023  润新知