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

Java数组的值拷贝和地址拷贝

在Java中,数组的值拷贝和地址拷贝是两种不同的操作。

值拷贝是指将一个数组的值复制到另一个新的数组中。这意味着新数组和原数组独立存在,修改其中一个数组不会影响另一个数组。Java中的数组是对象,所以通过值拷贝操作实际上是复制了数组对象的引用,而不是复制数组元素的值。

地址拷贝是指将一个数组对象的引用复制给另一个数组变量。这意味着两个数组变量指向同一个数组对象,修改其中一个数组会影响另一个数组。这种情况下,我们可以说两个数组是相等的。

下面是一个示例代码,展示了数组值拷贝和地址拷贝的不同:

public class ArrayCopyExample {public static void main(String[] args) {// 原始数组int[] originalArray = {1, 2, 3, 4, 5};// 值拷贝int[] copyArray = new int[originalArray.length];System.arraycopy(originalArray, 0, copyArray, 0, originalArray.length);// 修改原始数组的值originalArray[0] = 100;System.out.println("原始数组:");for (int num : originalArray) {System.out.print(num + " ");}System.out.println();System.out.println("值拷贝后的数组:");for (int num : copyArray) {System.out.print(num + " ");}System.out.println();// 地址拷贝int[] addressCopyArray = originalArray;// 修改原始数组的值originalArray[1] = 200;System.out.println("原始数组:");for (int num : originalArray) {System.out.print(num + " ");}System.out.println();System.out.println("地址拷贝后的数组:");for (int num : addressCopyArray) {System.out.print(num + " ");}System.out.println();}
}

输出结果为:

原始数组:
100 2 3 4 5
值拷贝后的数组:
1 2 3 4 5
原始数组:
100 200 3 4 5
地址拷贝后的数组:
100 200 3 4 5

可以看到,值拷贝后的数组不受原始数组值的影响,而地址拷贝后的数组会随着原始数组值的改变而改变。

http://www.lryc.cn/news/459275.html

相关文章:

  • 类与对象 中(剩余部分) 以及 日历
  • iOS 14 自定义画中画悬浮窗 Custom AVPictureInPictureController 实现方案
  • 【C#生态园】完整解读C#网络通信库:从基础到实战应用
  • js面试题---事件委托是什么
  • 谷歌浏览器 文件下载提示网络错误
  • 【记录】PPT|PPT 箭头相交怎么跨过
  • Linux中如何修改root密码
  • 中间件:SpringBoot集成Redis
  • 数据中心建设方案,大数据平台建设,大数据信息安全管理(各类资料原件)
  • TDD(测试驱动开发)是否已死?
  • Debezium系列之:实时从TDengine数据库采集数据到Kafka Topic
  • 数据结构(一)顺序表
  • 如何在 Jupyter Notebook 执行和学习 SQL 语句(中)
  • AutosarMCAL开发——基于EB Wdg驱动
  • Linux(1. 基本操作_命令)
  • 难点:Linux 死机定位(进程虚拟地址空间耗尽)
  • 小米路由器刷机istoreOS,愉快上网
  • 微信小程序 - 01 - 一些补充和注意点(补充ing...)
  • 微服务实战——登录(普通登录、社交登录、SSO单点登录)
  • windows 安装 ElasticSearch
  • Oracle Linux 9 (CentOS Stream 9) 安装 node.js 20
  • 【Axure安装包与汉化包附带授权证书】
  • SSH隧道验证的原理及实现例子
  • [计算机视觉]chapter1
  • RTKLIB学习记录【postpos、execses_b、execses_r】
  • docker,docker-desktop,docker-compose download
  • C#_带参数的委托进入队列执行
  • 【OpenCV】(二)—— 图片读取展示和保存
  • 【花卉识别系统】Python+卷积神经网络算法+人工智能+深度学习+图像识别+算法模型
  • k8s、prometheus、grafana数据采集和展示的链路流程