ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java的函数传参对原参数影响--只有容器类和自定义的对象会受影响

2022-01-29 10:30:00  阅读:140  来源: 互联网

标签:传参 numInteger testStr 自定义 num longList Java 实参 numLong


代码如下:

package com.haodf.service.openplatform.service.testdjp.sort;

import lombok.extern.slf4j.Slf4j;

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

/**
 * @Classname InsertSort
 * @Description TODO
 * @Date 2022/1/18 15:06
 * @Author djp
 */
@Slf4j
public class Test  {
    public static void main(String[] args) {
        run();
    }

    public static void run(){
        testNew();

    }



    private static void testNew(){
        int num = 1;
        Integer numInteger = 1;
        Long numLong = 22L;
        String testStr = "aa";
        List<Long> longList = new ArrayList<>();
        longList.add(6666L);

        tmpModify(num, numInteger, longList, numLong, testStr);

        log.info("num:{}, numInteger:{}, longList:{}", num, numInteger, longList);


    }

    private static void tmpModify(int num, Integer numInteger, List<Long> longList, Long numLong, String testStr){
        num++;
        numInteger++;
        longList.add(888L);
        numLong++;
        testStr = testStr.toUpperCase();
    }
}

输出: num:1, numInteger:1, longList:[6666, 888],numLong:22, testStr:aa

可以看到 只有容器 longList经过 函数处理发生了变化,

但是如果是 在 tmpModify 中将 longList置为 null,可以发现回到 函数 testNew 时,longList:[6666] ,还是原来的值,因为 只是在别的函数里修改了 其引用而已,原来的引用不变。

总结:

 

1.java的基本数据类型是传值调用,对象引用类型是传引用。

2.当传值调用时,改变的是形参的值,并没有改变实参的值,实参的值可以传递给形参,但是,这个传递是单向的,形参不能传递回实参。

3.当引用调用时,如果参数是对象,无论对对象做了何种操作,都不会改变实参对象的引用,但是如果改变了对象的内容,就会改变实参对象的内容。

参考:Java中的形参和实参的区别以及传值调用和传引用调用_miniminiyu的博客-CSDN博客

标签:传参,numInteger,testStr,自定义,num,longList,Java,实参,numLong
来源: https://blog.csdn.net/xinkuaile/article/details/122739955

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有