首页后端开发其他后端知识java是怎样复制数组,代码是什么

java是怎样复制数组,代码是什么

时间2024-03-27 16:58:05发布访客分类其他后端知识浏览521
导读:今天就跟大家聊聊有关“java是怎样复制数组,代码是什么”的内容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。 1、数组长度相等假设nums和nums1是长度相...
今天就跟大家聊聊有关“java是怎样复制数组,代码是什么”的内容,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。


 

1、数组长度相等

假设nums和nums1是长度相等的两个数组。

(推荐教程:java课程)

1.1、用nums = nums1;

赋值前

赋值后

nums创建的时候在堆里面创建一块内存区域用来存储,nums指向这个内存地址A。nums1创建后指向B。

现在令nums = nums1; 则把num1的地址(或者说是引用)赋给了num,所以num也指向了B。两个数组都指向堆中同一个内存区域,他们是共享里面的数据。

1.2、for循环

        for (int i = 0;
     i  nums1.length;
 i++){
    
            nums[i] = nums1[i];

        }
    

循环前

循环后

成功改变nums数组内部内容,而没有改变其引用。

1.3、Arrays类

方法1:复制指定数组至指定长度

nums = Arrays.copyOf(nums1,5);
    

方法2:复制指定数组的指定长度

nums = Arrays.copyOfRange(nums1,0,5);
    

两种方法最后的索引都可以> 数组的长度,然后后面的都会补上0。

两种方法都可以成功复制数组,而且我们发现原数组nums从524变成了526,说明这两种复制方法是创建了一个新数组,然后用等号左边的数组指向这个新数组。

1.4、System.arraycopy方法

System.arraycopy(originalArray, 0, targetArray, 0, originalArray.length);

可以看出这个方法类似于我们的for循环,是直接改原来数组的内容,没有改引用。

2、数组长度不等

赋值法成功for循环要注意越界问题,会报java.lang.ArrayIndexOutOfBoundsExceptionArrays类法成功注意越界问题,会报java.lang.ArrayIndexOutOfBoundsException

其他:

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

   //思路:设置一个index,表示非0数的个数,循环遍历数组,
    // 如果不是0,将非0值移动到第index位置,然后index + 1
    //遍历结束之后,index值表示为非0的个数,再次遍历,从index位置后的位置此时都应该为0
    public void moveZeroes(int[] nums) {

        if (nums == null || nums.length = 1) {
    
            return;

        }
    
        int index = 0;
    
        for (int i = 0;
     i  nums.length;
 i++) {

            if (nums[i] != 0) {
    
                nums[index] = nums[i];
    
                index++;

            }

        }
    

        for (int i = index;
     i  nums.length;
 i++) {
    
            nums[i] = 0;

        }

    }
    



到此这篇关于“java是怎样复制数组,代码是什么”的文章就介绍到这了,感谢各位的阅读,更多相关java是怎样复制数组,代码是什么内容,欢迎关注网络资讯频道,小编将为大家输出更多高质量的实用文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

java数组

若转载请注明出处: java是怎样复制数组,代码是什么
本文地址: https://pptw.com/jishu/654354.html
Java编程如何高效利用I/O,如何学习NIO编程 JS中图片加载优化方法是什么,有哪些

游客 回复需填写必要信息