当前位置: 首页 > news >正文

值传递和引用传递

在编程中,值传递(Pass by Value)和引用传递(Pass by Reference)是两种不同的参数传递方式,它们定义了函数或方法在调用时如何处理传递给它们的参数

1. 值传递

在值传递中,函数接收的是参数的副本,因此对该副本所做的修改不会影响到原始变量。也就是说,函数内部的更改不会反映在函数外部。

public class Example {public static void main(String[] args) {int x = 5;modifyValue(x);System.out.println(x); // 输出:5}public static void modifyValue(int num) {num = 10; // 修改的是副本,不影响原始的 x}
}

在这个例子中,x 被传递给 modifyValue() 函数时,实际上是传递了 x 的副本,因此 num 的改变不会影响到原始的 x。

2. 引用传递

在引用传递中,函数接收的是参数的内存地址的引用,因此对该引用的修改会直接影响到原始变量或对象。这种方式适用于对象类型的数据(例如数组、对象等)。

public class Example {public static void main(String[] args) {int[] arr = {1, 2, 3};modifyArray(arr);System.out.println(arr[0]); // 输出:10}public static void modifyArray(int[] array) {array[0] = 10; // 直接修改原始数组的内容}
}

在这个例子中,数组 arr 被传递给 modifyArray() 函数时,实际上传递的是数组的引用。因此对 array 的修改会影响到原始的 arr。

区别总结:

  • 值传递:传递的是参数的副本,函数内部对参数的修改不会影响原始值
  • 引用传递:传递的是参数的引用,函数内部对参数的修改会直接影响原始对象

在 Java 中,所有的基本数据类型(如 int、char、float)都是按值传递的,而对象类型(如数组、类对象)则是按引用传递的。


http://www.mrgr.cn/news/54408.html

相关文章:

  • 枚举的使用举例说明
  • 在Rocky Linux上安装Docker
  • 微服务搭建(二)
  • 高等数学 5.5 反常积分的审敛法 Γ函数
  • MYSQL的SQL优化
  • 青少年编程能力等级测评CPA C++(三级)-试卷1
  • spring boot实现不停机更新
  • 【Spring篇】Spring中的Bean管理
  • Reflection 70B乌龙事件始末:揭开“最强大模型”背后的真相
  • 工信部绿色工厂、绿色设计产品、绿色供应链企业、绿色园区名单(2017-2022年)
  • 07 P1088 [NOIP2004 普及组] 火星人
  • 脉冲扩散模型
  • 使用 Elastic、OpenTelemetry 和 Langtrace 观察 Langchain 应用程序
  • Fake Location 限制解除(运动世界校园,keep......)
  • 笔记本使用虚拟机,使用Ubuntu打开摄像头
  • ICM20948 DMP代码详解(89)
  • AJAX——POST 设置请求头信息
  • nginx(负载均衡)+web实例
  • Python | Leetcode Python题解之第495题提莫攻击
  • 基于Springboot+Vue的资源分享系统(含源码数据库)
  • Repo工具详解
  • 【黑马Redis原理篇】Redis网络模型
  • 基于SpringBoot的在线汽车票预订平台
  • 新手入门之初识maven
  • Burp Suite Professional 2024.9 for macOS x64 ARM64 - 领先的 Web 渗透测试软件
  • LeetCode 每日一题 2024/10/14-2024/10/20