Java基础:数组的长度、数组的复制

举报
wljslmz 发表于 2022/12/28 13:13:54 2022/12/28
【摘要】 本文将给大家介绍数组的长度和数组复制方面的内容。 数组长度在Java 中,数组长度是指一个数组可以容纳的元素个数,没有预定义的方法来获取数组的长度,我们可以通过使用数组属性length 来取到 Java 中的数组长度。array.length:length 是适用于数组的 final 变量,借助于长度变量,我们可以获得数组的大小。代码示例:int[] a1 = new int[8]; in...

本文将给大家介绍数组的长度和数组复制方面的内容。

数组长度

在Java 中,数组长度是指一个数组可以容纳的元素个数,没有预定义的方法来获取数组的长度,我们可以通过使用数组属性length 来取到 Java 中的数组长度。

array.length:length 是适用于数组的 final 变量,借助于长度变量,我们可以获得数组的大小。

代码示例:

int[] a1 = new int[8];  
int lengthOfA1 = a1.length;

在给定的代码片段中,a1是一个int类型的数组,容量为8 个条目,lengthOfA1是一个跟踪数组长度的变量,我们使用数组名称a1后跟点. 运算符和长度属性来确定数组的大小。

数组复制

数组复制在真实的开发中会经常遇到,复制数组的方法一般分为三种情况:使用for循环,使用clone方法,使用arraycopy方法。

for循环

使用for循环复制数组时,就可以使用数组的长度属性了。

我们先直接上代码:

String[] a1 = {"java", "Spring", "SpringBoot", "MySQL"}; 
String[] a2 = new String[a1.length];

for (int i = 0; i < a1.length; i++) {
    a2[i] = a1[i];
}

由代码可知,新建了一个字符串的数组a1,数组中有4个字符串:

  • “java”
  • “Spring”
  • “SpringBoot”
  • “MySQL”

然后新建了一个和a1一样长度的数组a2,遍历a1数组,将a1相同坐标的数据赋值给a2相同坐标,这样就实现了数组之间的拷贝。

clone方法

Object.clone()继承自数组中的Object类。

我们使用 clone 方法复制一个基本类型数组:

String[] a1 = {"java", "Spring", "SpringBoot", "MySQL"}; 
 
String[] a2 = a1.clone();

它们在克隆后具有相同的内容,但它们持有不同的引用,因此其中一个的任何更改都不会影响另一个。

另一方面,如果我们使用相同的方法克隆一个非基本类型的数组,那么结果将不同。

arraycopy方法

在 Java 中,System 类包含一个名为arraycopy()复制数组的方法。与上述两种方法相比,此方法是一种更好的复制数组的方法。

arraycopy()方法允许您将源数组的指定部分复制到目标数组:

arraycopy(Object src, int srcPos,Object dest, int destPos, int length)
  • src:要复制的源数组
  • srcPos:源数组中的起始位置(索引)
  • dest:将从源中复制元素的目标数组
  • destPos:目标数组中的起始位置(索引)
  • length:要复制的元素数

我们举个例子:

String[] a1 = {"java", "Spring", "SpringBoot", "MySQL"}; 

String[] a2 = new String[4];

System.arraycopy(a1, 0, a2, 0, a1.length);

总结

本文给大家介绍了Java中数组的长度、以及如何复制数组,其中比较推荐的是使用arraycopy方法。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。