java 二维数组 arraycopy_Java对数组的复制[通俗易懂]

java 二维数组 arraycopy_Java对数组的复制[通俗易懂]定义一个数组int[]a={3,1,4,2,5};int[]b=a;数组b只是对数组a的又一个引用,即浅拷贝。如果改变数组b中元素的值,其实是改变了数组a的元素的值,要实现深度复制,可以用clone或者System.arrayCopyint[]a={3,1,4,2,5};int[]b=a.clone();b[0]=10;System.out.println(b[0]+””+a[0…

大家好,又见面了,我是你们的朋友全栈君。

定义一个数组int[] a={3,1,4,2,5}; int[] b=a;  数组b只是对数组a的又一个引用,即浅拷贝。

如果改变数组b中元素的值,其实是改变了数组a的元素的值,要实现深度复制,可以用clone或者System.arrayCopy

int[] a={3,1,4,2,5};int[] b=a.clone();b[0]=10;System.out.println(b[0]+”  “+a[0]);但是clone和System.arrayCopy都是对一维数组的深度复制。

对于二维数组则不一样:int[][] a={
{3,1,4,2,5},{4,2}};int[][] b=a.clone();b[0][0]=10;System.out.println(b[0][0]+”  “+a[0][0]);输出为10  10所以clone并不能直接作用于二维数组。

因为java中没有二维数组的概念,只有数组的数组。所以二维数组a中存储的实际上是两个一维数组的引用。当调用clone函数时,是对这两个引用进行了复制。

要证明,只需看下面的输出int[][] a={
{3,1,4,2,5},{4,2}};int[][] b=a.clone();b[0][0]=10;System.out.println(b[0][0]+”  “+a[0][0]);System.out.println(a[0]==b[0]);第5句输出为true.用clone对二维数组进行复制,要在每一维上调用clone函数

int[][] a={
{3,1,4,2,5},{4,2}};int[][] b=new int[a.length][];for(int i=0;i

小结:

数组的复制方法现在至少有四个思路:

1 使用循环结构 这种方法最灵活。唯一不足的地方可能就是代码较多

2 使用Object类的clone()方法, 这种方法最简单,得到原数组的一个副本。灵活形也最差。效率最差,尤其是在数组元素很大或者复制对象数组时。

3 使用Systems的arraycopy这种方法被告之速度最快,并且灵活性也较好,可以指定原数组名称、以及元素的开始位置、复制的元素的个数,目标数组名称、目标数组的位置。

4 Arrarys类的copyOf()方法与copyOfRange()方法可实现对数组的复制

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156737.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SSL连接建立过程分析(1)

    SSL连接建立过程分析(1)

    2021年12月8日
    49
  • 回归分析中自变量取舍、检验及多重共线性处理(VIF)「建议收藏」

    回归分析中自变量取舍、检验及多重共线性处理(VIF)「建议收藏」A1正交假定:误差项矩阵与X中每一个x向量都不相关高斯-马尔科夫定理:若满足A1和A2假定,则采用最小二乘法得到回归参数估计是最佳线性无偏估计方程估计值b1和b2可以看做偏回归系数,也是相应自变量对y的一种偏效应偏效应:在控制变量下,各自变量X对因变量Y的净效应残差项:针对具体模型而言,被定义为样本回归模型中观测值与预测值之差误差项:针对总体真实回归模型而言,它由一些不可观测因素或测量…

    2022年5月30日
    66
  • 最新Java学习教程路线图(2021完整版)

    最新Java学习教程路线图(2021完整版)各样的编程语言不断崛起,但唯有Java是牢牢占据着老大的位置,目前几乎90%以上的大中型互联网应用系统在服务器端开发首选Java。因此,也是吸引了不少年轻人投入到Java的学习之中。但不得不说,Java作为老牌编程语言,学习起来还是需要系统才行的。不少小伙伴会通过在网络上找各种各样的学习视频去研究学习,却往往缺乏了系统全面的学习路线。本文所有Java视频资料可点击免费领取所以,今天就跟大家分享一份系统的Java学习教程路线图,零基础也可以无压力的走进Java,学习Java!第一阶段、Java基础J

    2022年7月9日
    30
  • Windows定时关机[通俗易懂]

    Windows定时关机[通俗易懂]1.首先将鼠标已到左面的左下角(开始菜单),右击后选择“计算机管理”,出现下图2.点击“任务计划程序”,然后在右边点击“创建基本任务”,随便填写个任务名称,比如定时关机,完了点击下一步3.选择“一次”,点击下一步4.设置开始时间,点击下一步5.选择“启动程序”,点击下一步6.程序或脚本那里输入“shutdown”,添加参数那里输入“/s”7.最后点击完成

    2022年5月15日
    48
  • css3很美的蟠桃动画

    查看效果:http://hovertree.com/texiao/css3/26/源码下载:http://hovertree.com/h/bjaf/ndhxgfkn.htm效果图如下:代码如下:转自

    2021年12月26日
    35
  • 安卓取消home键(7P)

    在androidP版本上想要屏蔽某一个应用界面的HOME键和RCENT键需要怎么做(1)其实也不用多复杂,应用首先在清单文件中获得STATUS_BAR权限<uses-permissionandroid:name=”android.permission.STATUS_BAR”/>(2)然后我们需要在该Activity的oncreat方法中去屏蔽,记住,一定要在setCon…

    2022年4月10日
    161

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号