• 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传参传递的是引用,给这个引用类型变量重新赋值后,它就指向了其它地方。

  • 相关阅读:
    Linux线程信号
    有理想的程序员必须知道的15件事
    Linux下 mplayer 使用手册
    Winxp下 gvim 编程环境搭建
    在WPF中弹出右键菜单时判断鼠标是否选中该项
    F#基本类型——Discriminated Unions
    在WPF的TreeView中实现右键选定
    WPF TreeView tools
    F#基本类型——Structure
    增强了一下DownloaderPlus的视频转换功能
  • 原文地址:https://www.cnblogs.com/Frank-Hong/p/14221188.html
Copyright © 2020-2023  润新知