Java的函数传参对原参数影响--只有容器类和自定义的对象会受影响
2022/1/29 11:04:31
本文主要是介绍Java的函数传参对原参数影响--只有容器类和自定义的对象会受影响,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
代码如下:
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博客
这篇关于Java的函数传参对原参数影响--只有容器类和自定义的对象会受影响的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26大厂数据结构与算法教程:入门级详解
- 2024-12-26大厂算法与数据结构教程:新手入门指南
- 2024-12-26Python编程入门指南
- 2024-12-26数据结构高级教程:新手入门及初级提升指南
- 2024-12-26并查集入门教程:从零开始学会并查集
- 2024-12-26大厂数据结构与算法入门指南
- 2024-12-26大厂算法与数据结构入门教程
- 2024-12-26二叉树入门教程:轻松掌握基础概念与操作
- 2024-12-26初学者指南:轻松掌握链表
- 2024-12-26平衡树入门教程:轻松理解与应用