• Java的引用传递


    Java只有值传递,但传递的是引用,类似C/C++中的指针。

    往容器里添加引用类型数据

    将一个引用装入容器时,若外部程序对该引用指向的内容作了修改,那么容器里的内容也会改变。也就是说将一个引用类型变量加入到容器中,实际上还留了个“指针”在外部,通过对“指针”所指内容的修改会造成容器里内容的改变,这点需要格外注意。
    因此往容器中添加元素时,添加不同的元素要使用不同的引用

    举例说明:

    List<StringBuilder> list=new ArrayList<>();
    StringBuilder sb=new StringBuilder("abcd");
    list.add(sb);
    sb.setCharAt(0,'e');
    list.add(sb);
    sb.setCharAt(1,'f');
    list.add(sb);
    sb.setCharAt(2,'g');
    list.add(sb);
    System.out.println(list);
    

    程序输出:

    [efgd, efgd, efgd, efgd]
    

    setCharAt()对引用指向的内容作了修改,则list内的内容也会跟着改变。list包含4个元素,但这四个元素(引用类型)都指向了内存中的同一个地方,引用指向的内容最后被修改成了"efgd",因此4个元素值都是efgd。

    引用类型作为函数参数

    当引用类型变量作为函数参数时,在函数体内只能对引用指向的内容做修改,而不能给这个引用类型变量重新赋值。因为Java传参传递的是引用,给这个引用类型变量重新赋值后,它就指向了其它地方。

  • 相关阅读:
    Android必学——AsyncTask
    成员变量 局部变量
    Java中private、protected、public和default的区别
    实现图片的一个轮转功能
    vmware14克隆后UUID相同的解决方法
    curl
    python3 configparser模块
    python2.7系统性能监控psutil模块
    mysql5.7.22tar包安装
    通过pip3安装ipython
  • 原文地址:https://www.cnblogs.com/Frank-Hong/p/14221188.html
Copyright © 2020-2023  润新知