zoukankan      html  css  js  c++  java
  • 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两个引用变量是相等而独立的

  • 相关阅读:
    重构该何时登场
    重构
    中国剩余定理
    连分数的应用
    连分数的性质
    有限连分数与欧几里德除法的联系
    连分数
    费马大定理
    P4178 Tree 点分治
    LOJ 6029. 「雅礼集训 2017 Day1」市场
  • 原文地址:https://www.cnblogs.com/J14nWe1/p/9857028.html
Copyright © 2011-2022 走看看