【Java】引用传递

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

class tryRf{
    void hehda(int he, List<String> da, List<String> ha) {
        he = 5;
        da.add("heheda");
        ha = Arrays.asList("he", "he", "da");
    }

}

public class JavaReferencePass {

    public static void main(String[] args) {
        System.out.println("======== 引用传递 ==========");
        tryRf tf = new tryRf();
        int a = 3;
        List<String> al = new ArrayList<>();
        al.add("123");
        List<String> ak = new ArrayList<>();
        ak.add("135");
        tf.hehda(a, al, ak);
        System.out.println(a); // 3
        System.out.println(al);  // [123, heheda]
        System.out.println(ak);  // [135]

        tf.hehda(a, al, al);
        System.out.println(a); // 3
        System.out.println(al);  // [123, heheda, heheda]
        System.out.println(ak);  // [135]
    }
}

简而言之,基础类型不会被函数改变;ArrayList等 是传引用进函数,会发生变化(如al),但是函数体不会覆盖ArrayList(如ak).

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

推荐阅读更多精彩内容

  • 0.前言 因为之前有同学刚好问我一个关于Java引用传递的问题,为什么将ArrayList中拿到的一个元素,赋给一...
    SYFHEHE阅读 4,077评论 0 0
  • JS是按值传递还是按引用传递? 按值传递 VS. 按引用传递 探究JS值的传递方式 按共享传递 call by s...
    编程小王子阅读 2,532评论 1 1
  • 今晚遇到一个问题,就是全局变量的局,死活不变 如图的效果 country 永远为 1 最近遇到个有趣的问题:“JS...
    茶艺瑶阅读 2,934评论 0 1
  • 即使公司已經開始給你放婦女節半日假,即使女兒已經可以在父親節給你畫賀卡,也不妨礙我給你過個兒童節。 本來兒童和未成...
    mizzzhou阅读 20,283评论 11 18
  • 大概是昨天看《穿靴子的猫》意犹未尽,一闲下来,宝贝就嚷嚷着要看。后来我又从书架上拿了一本《小阿力的大学校》,因为今...
    无根的浮萍985阅读 1,527评论 0 0