【Java】复制数组的四种方式
访客 发布于2023-10-06 办公教程 104
1. System.arraycopy()
用来将一个数组的(一部分)内容复制到另一个数组里面去。
定义:
void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
例:
int[] arr1 = { 1, 2, 3, 4, 5 };
int[] arr2 = new int[10];
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
如果传入的参数为 null
、传入的参数不是数组、无法将原数组的类型转换为目标数组的类型、目标数组长度不够,都会抛出异常。
见文档。
2. arr.clone()
这个方法实际上是从 Object
里继承过来的。用来克隆本数组,返回一个新数组。
定义:
protected Object clone();
例:
int[] arr1 = { 1, 2, 3, 4, 5 };
int[] arr2 = null;
arr2 = arr1.clone();
见文档。
3. Arrays.copyOf()
Arrays
位于 import java.util.Arrays
下。
这个函数有两个版本:
<T> T[] java.util.Arrays.copyOf(T[] original, int newLength)
<T, U> T[] java.util.Arrays.copyOf(U[] original, int newLength, Class<? extends T[]> newType)
见文档。
<T>
复制指定数组为一个新的、指定长度的数组。
新长度可以:
- 和原来的一样长:全部复制
- 比原来的短:只复制源数组前面一部分
- 比原来的长:新数组多余的部分用
null
填充
<T, U>
复制指定数组为一个新的、指定长度、指定类型的数组。
源数组里的内容会被自动转换为新数组的类型。但注意,源数组的元素类型必须可以被转换为新类型,否则会抛出 ArrayStoreException
异常。
例:
Integer[] arr1 = { 1, 2, 3, 4, 5 };
// 注意 <T,U> 版本的第三个参数 `newType` 是目标数组类型,不是目标数组元素类型
// 所以应该是 Object[].class,而不是 Object.class
Object[] arr2 = Arrays.copyOf(arr1, 4, Object[].class);
for (Object object : arr2) {
System.out.println(object);
}
4. Arrays.copyOfRange()
这个方法同样有两个定义:
<T> T[] copyOfRange(T[] original, int from, int to);
<T,U> T[] copyOfRange(U[] original, int from, int to, Class<? extends T[]> newType);
Arrays.copyOfRange()
和 Arrays.copyOf()
,差不多,只是前者可以指定起始位置而已。
总结
四种方法的实现关系(箭头表示“调用了”):
所以 System.arraycopy
和 Object.clone()
的效率要比 Arrays
高。
四种方法的特点比较:
更多 推荐PPT模板
-
一份简洁大气的商务风格工作总结汇报PPT模板,浅灰色背景,蓝色主色调,包括过渡页、时间轴、折线图、地图等页面。
2023-06-14 760
-
灰格子背景 简洁蓝商务PowerPoint幻灯片模板
2023-06-15 747
-
不忘初心 牢记使命——蓝金党政风工作汇报ppt模板
2023-06-15 737
-
彩虹多彩王国ppt模板
2023-06-15 734
相关推荐
- 10-06 K8sGPT,基于 AI 的云原生终极工具
- 10-06 【Java】复制数组的四种方式
- 10-06 Qt::图层框架-图片图层-序列图层-QGraphicsPixmapItem
- 10-06 一篇博客学会系列(1) —— C语言中所有字符串函数以及内存函数的使用和注意事项
- 10-06 美丽的图论
- 10-06 Pygame实现黑客帝国屏幕效果
- 10-06 后台管理系统: 商品管理
- 10-06 chrome插件-入门
- 10-06 【C++入门到精通】C++入门 —— set & multiset (STL)
- 10-02 【数据结构】什么是数据结构?
- 最近发表
-
- 一份有创意的大学生求职个人简历PPT模板,时尚全图背景配合大号字体,共32页,内容非常详尽,好看的动态效果。使用字体:汉仪菱心体简。
- 一份精美时尚的商务风格多功能幻灯片模板,以城市楼群远景图片为背景,全图型设计,时尚大气,共18页,目录页、过渡页、时间轴、图文说明等各类页面齐全丰富,可用于商务
- 小清新复古色系通用PPT模板。一份小清新风格的幻灯片模板,采用养眼柔和的复古色系艺术抽象条纹设计,通用性强。
- 实用精品商业计划书PPT模板。一份精美实用的商业计划策划书PPT模板,框架完整,内容实用,严谨专业,页面丰富。
- 炫酷欧美复古杂志风PPT模板。一份创意精美幻灯片模板,采用复古色系配合杂点做旧效果,很有质感,杂志风格的排版布局,无缝滚动切换效果,适合用于新年展望、员工激励等
- 一份实用的项目合作方案汇报PPT模板,排版布局配色简洁大气专业,包括项目介绍、需求分析、项目设计、各方需要配合的工作、项目预算几个部分。
- 好看的半透明效果PPT模板。一份很好看的幻灯片模板,采用时尚的半透明效果设计,大气山峰雪山背景,动态演示。
- 一份精美的简约的半透明IOS苹果风格PPT模板,渐变模糊光晕背景,半透明图形元素,好看的动态播放效果,用途广泛。
- 黑黄配色时尚欧美风PPT模板。一份精美好看的幻灯片模板,黑黄大气经典配色,时尚欧美范,共19页,页面丰富实用。
- 杂志风项目策划汇报PPT模板。经典红黑配色,干净利落的大气商务风格,动态演示,适合项目策划报告汇报使用。
- 标签列表
- 控制面板
- 搜索