当前位置:网站首页>数组的复制和数组地址值的复制
数组的复制和数组地址值的复制
2022-07-21 17:56:00 【Cording..】
数组地址值的复制简例:1
/*
* 使用简单数组
(1)创建一个名为ArrayTest02的类,在main()方法中声明arr1和arr2两个变量,他们是int[]类型的数组。
(2)使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19。
(3)显示arr1的内容。
(4)赋值arr2变量等于arr1,修改arr2中的偶索引元素,使其等于索引值(如arr[0]=0,arr[2]=2)。打印出arr1。
*
* 问答:arr1和arr2是什么关系?arr1和arr2地址值相同,都指向了堆空间的唯一的一个数组实体。
*/
public class ArrayTest02 {
public static void main(String[] args) {
int[] arr1,arr2;//定义两个数组
arr1 = new int[]{2,3,5,7,11,13,17,19};//数组一赋值
//显示array1的内容
System.out.println("赋值前数组arr1的值");
for(int i = 0;i < arr1.length;i++){//arr1.length获取数组arr1的长度,值为8
System.out.print(arr1[i] + "\t");
}
//赋值arr2变量等于arr1
//不能称作数组的复制。
arr2 = arr1;//相当于数组arr1的地址值赋值给数组arr2,此时两者只想空间中同一个数组
//修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2)
for(int i = 0;i < arr2.length;i++){
if(i % 2 == 0){
arr2[i] = i;
}
}
System.out.println();
//打印出arr1
System.out.println("赋值后数组arr1的值");
for(int i = 0;i < arr1.length;i++){
System.out.print(arr1[i] + "\t");
}
}
}
运行结果如图所示,由此发现代码中我们改变了数组arr2的值输出时arr1却发生了变化,是因为arr1,arr2 地址值相同指向内存空间中的同一个数组即{2,3,5,7,11,13,17,19},改变数组arr2中的偶数值后数组变为{0,3,2,7,4,13,6,19},输出arr1也发生变化。
/*2
* 使用简单数组
* 拓展:修改题目,实现array2对array1数组的复制
*/
/*
* 使用简单数组
* 拓展:修改题目,实现array2对array1数组的复制
*/
public class ArrayExer3 {
public static void main(String[] args) { //alt + /
int[] array1,array2;
array1 = new int[]{2,3,5,7,11,13,17,19};
//显示array1的内容
System.out.println("赋值前数组arr1的值");
for(int i = 0;i < array1.length;i++){
System.out.print(array1[i] + "\t");
}
//数组的复制:
array2 = new int[array1.length];
for(int i = 0;i < array2.length;i++){
array2[i] = array1[i];
}//两数组中每一个值一一对应且相等
//修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2)
for(int i = 0;i < array2.length;i++){
if(i % 2 == 0){
array2[i] = i;
}
}
System.out.println();
//打印出array1
System.out.println("赋值后数组arr1的值");
for(int i = 0;i < array1.length;i++){
System.out.print(array1[i] + "\t");
}
System.out.println();
System.out.println("赋值后数组arr2的值");
for(int i = 0;i < array2.length;i++){
System.out.print(array2[i] + "\t");
}
}
}
此时输出结果相当于现将arr1数组赋值给arr2,再将arr2数组中的值进行改变
边栏推荐
- Small game cases of aircraft dodging bullets
- Vocabulary of CET-4
- c语言之指针(一)
- Preliminary use of El expressions
- Docker系列 六. Docker 安装 Redis
- 嵌入式之网络接口方案介绍与驱动调试方式总结
- Linux Shell 变量声明、.定时任务、数据库定期备份、自动备份
- Cross border trade terms
- 遇到的问题记录
- 1978-2021 China Statistical Yearbook, 2003-2019 (provincial and municipal panel data), 1999-2019 (county panel data)
猜你喜欢
SerializationException: Could not read JSON: Unrecognized token “xxx“
核心技术
Exception class
1989-2020年学历结构和计算平均受教育年限数据
嵌入式之网络问题总结(网卡丢包、网卡无法识别)
c语言之指针(四)
(1) Principle analysis of Tiktok Kwai short video watermarking
Small game cases of aircraft dodging bullets
Seven parameters of thread pool
嵌入式之网络接口方案介绍与驱动调试方式总结
随机推荐
Seven parameters of thread pool
odoo-js-doAction详解
Laravel 关联模型的使用、一对一、一对多、多对多
常见的doc命令
Preliminary use of El expressions
Redis原理之GEO
Seven ways to create thread pools
单片机入门知识
Redis learning notes
Hyperloglog of redis principle
异常处理
MySQL安装配置-8.0版-Windows
使用Harry过程中FAQ(问题解答)
嵌入式之SD卡/U盘只读问题解决方案(FAT只读修复方式)
实现一个js抽奖玩玩?
Mvcc multi version concurrency control for MySQL learning
EasyCVR平台V2.5.0版本及以上如何配置WebRTC协议实现低延迟播放?
嵌入式之SD卡异常问题分析
Pointer of C language (1)
Union keyword in SQL