网站的流量怎么赚钱,花都区pc端网站建设,县门户网站建设整改,wordpress微商城模板下载1、传递方式 参数传递有两种方式#xff1a;值传递和引用传递。
值传递#xff1a;这是 Java 中默认的参数传递方式。当参数以基本数据类型#xff08;如 int、char、boolean 等#xff09;#xff09;或不可变对象#xff08;如String、整数数组等#xff09;的形式传…1、传递方式 参数传递有两种方式值传递和引用传递。
值传递这是 Java 中默认的参数传递方式。当参数以基本数据类型如 int、char、boolean 等或不可变对象如String、整数数组等的形式传递时使用的是值传递。在值传递中方法内部的参数变量是方法调用时传入参数的一个副本。对参数变量的修改不会影响到方法调用时传入的实际参数。引用传递当参数以对象的引用如对象、数组、类的实例等的形式传递时使用的是引用传递。在引用传递中方法内部的参数变量实际上是方法调用时传入参数的一个引用。对参数变量的修改会反映到方法调用时传入的实际参数上。
2、示例代码
package com.ybw.map;import com.alibaba.fastjson2.JSON;
import com.ybw.dto.UserDTO;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;import java.util.HashMap;
import java.util.Map;/*** author weixiansheng* version V1.0* className MapTest* date 2023/11/21**/
Slf4j
public class MapTest {/*** methodName: testMap* return: void* author: weixiansheng* date: 2023/11/21**/Testpublic void testMap() {MapString, UserDTO userDTOMap new HashMap();setUserDTOMap(userDTOMap);log.info(testMap userDTOMap:{}, JSON.toJSONString(userDTOMap));}/*** 在上述代码中当我们在方法内部重新赋值userDTOMap时我们实际上是创建了一个新的Map对象* 并将其地址复制到了原来存放userDTOMap变量地址的地方。这意味着原来的Map对象仍然存在于堆中* 但其地址已经不再由userDTOMap变量指向了。** param userDTOMap* methodName: setUserDTOMap* return: void* author: weixiansheng* date: 2023/11/21**/private void setUserDTOMap(MapString, UserDTO userDTOMap) {userDTOMap.put(1, new UserDTO(1L, weixiansheng));userDTOMap Map.of(1, new UserDTO(1L, weixiansheng), 2, new UserDTO(2L, weixiansheng));log.info(setUserDTOMap userDTOMap:{}, JSON.toJSONString(userDTOMap));}
}打印日志
[INFO ] 2023-11-21 14:02:48.579 [main] com.ybw.map.MapTest - setUserDTOMap userDTOMap:{2:{id:2,name:weixiansheng},1:{id:1,name:weixiansheng}}
[INFO ] 2023-11-21 14:02:48.581 [main] com.ybw.map.MapTest - testMap userDTOMap:{1:{id:1,name:weixiansheng}}在setUserDTOMap我们重新对它进行了赋值不过没有生效。
总结 将对象引用传递给方法时实际上传递的是对象的引用而不是对象本身。因此如果在方法内部更改了引用那么原始对象不会受到影响。