【JavaSE】数组复制的几种方式

news/2024/11/24 6:51:37/

找准方向,全力出击

文章目录

  • 1. Arrays.copyOf()
  • 2. System.arraycopy()
  • 3. for循环
  • 4. clone()


1. Arrays.copyOf()

它的语法为

public static <T> T[] copyOf(T[] original, int newLength)

方法返回值为一个数组,newLength为数组的新长度,若新长度大于原数组长度,则需要在空余出补上默认元素值,0或者null.
应用如下

int[] arr2 = Arrays.copyOf(arr1, arr1.length);

2. System.arraycopy()

它的语法为

public static void arraycopy(Object src, int srcPos,Object dest, int destPos, int length)

src为源数组,srcPos为源数组起始位置。
dest为目标数组,destPos为目标数组要复制的起始位置,length为复制的长度。
它实现的机制如下

  1. 检查源数组和目标数组是否为空,如果为空则抛出NullPointerException异常。
  2. 检查源数组和目标数组的起始位置和长度是否合法,如果不合法则抛出IndexOutOfBoundsException异常。
  3. 判断源数组和目标数组是否引用同一对象,如果是则直接返回,因为复制已经完成。
  4. 根据源数组和目标数组的类型信息以及长度信息创建新的元素数组。
  5. 使用循环结构复制源数组中的元素到目标数组中。
    栗子如下
System.arraycopy(arr1, 0, arr2, 0, arr1.length);

3. for循环

for循环遍历数组

int[] arr1 = { 1, 2, 3 };
int[] arr2 = new int[arr1.length];
for (int i = 0; i < arr1.length; i++) {arr2[i] = arr1[i];
}

4. clone()

举例如下

int[] numbers = {1, 2, 3, 4, 5};
int[] clonedNumbers = numbers.clone();

clone()方法返回的是一个浅拷贝(Shallow Copy)的数组,即只复制了数组本身及其元素的引用。

如果需要深拷贝(Deep Copy),则需要对数组中每个元素进行递归复制。

哒哒



http://www.ppmy.cn/news/69555.html

相关文章

C++ Primer第五版_第十六章习题答案(61~67)

文章目录 练习16.61练习16.62Sales_data.hex62.cpp 练习16.63练习16.64练习16.65练习16.66练习16.67 练习16.61 定义你自己版本的 make_shared。 template <typename T, typename ... Args> auto make_shared(Args&&... args) -> std::shared_ptr<T> {r…

实时更新天气微信小程序开发

1.新建一个天气weather项目 2.在app.json中创建一个路由页面 当我们点击保存的时候&#xff0c;微信小程序会自动的帮我们创建好页面 3.在weather页面上书写我们的骨架 4.此时我们的页面很怪&#xff0c;因为没有给它添加样式和值。此时我们给它一个样式。&#xff08;样式写在…

事件循环Event Loop

什么是事件循环&#xff08;event loop&#xff09; 主线程不断的从消息队列中获取消息&#xff0c;执行消息&#xff0c;这个过程被称为事件循环&#xff0c;在javaScript中就是采用事件循环来解决单线程带来的问题 线程和进程 进程&#xff1a;计算机已经运行的程序&#…

iOS开发系列--Swift语言

概述 Swift是苹果2014年推出的全新的编程语言&#xff0c;它继承了C语言、ObjC的特性&#xff0c;且克服了C语言的兼容性问题。Swift发展过程中不仅保留了ObjC很多语法特性&#xff0c;它也借鉴了多种现代化语言的特点&#xff0c;在其中你可以看到C#、Java、Javascript、Pyth…

面试必问网络 - dos 攻击 和 ddos 攻击是什么,如何防范

1、DoS 攻击 和 DDoS 攻击的是什么 DoS 攻击&#xff1a; DoS&#xff08;Denial of Service&#xff0c;拒绝服务&#xff09; DoS 攻击通常由单个攻击者发起&#xff0c;通过向目标系统发送大量请求或特质的恶意数据包&#xff0c;使目标系统的资源耗尽&#xff0c;从而导…

【连续介质力学】张量的性质2

张量的代数操作 张量的性质 张量迹 Tensor Trace 定义 e ^ i ⨂ e ^ j \hat e_i \bigotimes \hat e_j e^i​⨂e^j​的迹: T r ( e ^ i ⨂ e ^ j ) e ^ i ⋅ e ^ j δ i j Tr(\hat e_i \bigotimes \hat e_j) \hat e_i \cdot \hat e_j \delta_{ij} Tr(e^i​⨂e^j​)e^i​⋅…

南京邮电大学Web技术双语实验一(客户端HTML脚本编写)

文章目录 一、 实验目的和要求二、实验环境(实验设备)三、实验原理及内容&#xff08;一&#xff09;编写个人主页&#xff08;二&#xff09;计算方程的两个根 四、实验小结&#xff08;包括问题和解决方法、心得体会、意见与建议等&#xff09;&#xff08;一&#xff09;实验…

NEFU-2023-JAVA实验八

实验目的 理解基于IO流文件操作的过程及意义 理解并掌握基于字节数组缓冲区&#xff0c;实现IO操作方法 理解并掌握基于NIO文件目录的创建方法 理解并掌握基于NIO文件创建的创建方法 理解并掌握基于NIO文件的删除方法 实验内容 需求 &#xff08;1&#xff09;按要求实现IOTest…