关于数组的复制

使用简单数组

* 1,创建一个名为ArrayTest的类,在main()方法中声明array1和array2两个变量,他们是int[]类型的数组。

* 2,使用大括号 { } ,把array1初始化为8个素数:2,3,5,7,11,13,17,19。

* 3,显示array1的内容。

* 4,赋值array2变量等于array1,修改array2中的偶索引,使其等于索引值(如array[0]=0,array[2]=2)。打印出array1.

*

* 思考:array1和array2是什么关系?array1和array2地址值相同,都指向了堆空间的唯一的一个数组实体。

* 扩展:修改题目,实现array2对array1数组的复制

错误的复制:

public class ArrayExer2 {
    public static void main(String[] args) {
        int[] array1,array2;
        
        array1 = new int[] {2,3,5,7,11,13,17,19};
        
        //显示array1的内容
        for(int i = 0;i < array1.length;i++) {
            System.out.println(array1[i] + "\t");
        }
        //赋值array2变量等于array1
        //不能称作地址的赋值,相当于创建一个快捷方式
        array2 = array1;
        
        //修改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
        
    }
}

数组的复制如果直接,只是复制array1的地址值,实际上array1和array2公用一个地址值,

类似于电脑上的软件,可以有多个快捷方式,只是名字不一样,而打开的软件却是同一个。

如果要复制数组,那么需要遍历数组array1,遍历出来的数组对array2进行赋值

正确的复制:

public class ArrayExer3 {
    public static void main(String[] args) {
        int[] array1,array2;
        
        array1 = new int[] {2,3,5,7,11,13,17,19};
        
        //显示array1的内容
        for(int i = 0;i < array1.length;i++) {
            System.out.println(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
        
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熔岩巨兽、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值