Java基础之数组拷贝

Arrays.copyOf

详解

copyOf是Arrays类下面的一个方法,用于拷贝各种数组

以整型数组为例:int [ ] copyOf(int [ ]array,int newLength);第一个参数是想要拷贝到数组,第二个参数是新拷贝得到的数组的大小(不一定非得和原始数组大小一样)

俩次打印的结果如下:

这说明拷贝后,array1与array2指向了不同的对象,只不过其中的数一样,所以通过array2改变数组的值不会影响array1.

拓展

上面说了array2的大小不一定与array1的相同,所以,Arrays.copyOf也可以实现扩容:

扩容后,剩余位置就初始化为0。

那如果变成1/2长呢?也可以,结果如下:

System.arraycopy

实际上copyOf的内部就是调用arraycopy实现的

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

native说明是本地方法,本地方法的特点是:1.它的底层是由c/c++代码实现的,所以我们看不到它的实现方法 2.速度快。

src是从哪里拷,srcPos是从哪个位置开始拷(即下标),dest是考到哪里,length是要拷贝多长

那是null

由此可见,array2中剩余的空间就是系统默认值

拓展

根据这个方法的参数,就可以知道,System.arraycopy可以指定拷贝区间

Arrays.copyOfRange

由arraycopy可以指定拷贝区间,又想到了Arrays.copyOfRange,它也可以。还是以整型数组举例

int [ ] copyOfRange(int [ ]array,int from,int to);

有返回值,所以要接收

这是从下标为1拷贝到下标为3,结果为:

这是因为在Java中的from to一般为左闭右开区间

数组名.clone()

这也是数组拷贝的方法之一

有关数组操作的其他方法

Arrays.equals

它是判断两个数组的对象的值是否完全一样,一样就返回true,否则返回false

结果为:

第一个打印false是因为数组是局部变量,它存放了所指向对象的地址,而array1与array2指向的空间不同,即地址不同,所以第一个是false

Arrays.fill

用法举例

将一个数组的值全部赋值为指定的值,可以对各种类型的数组进行操作

也可以局部赋值

还是再加上from to即可

结果呢?还是左闭右开区间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/214378.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深层神经网络(第四周)

这里省略了深层神经网络的前向传播和反向传播,内容和之前相似,不做过多描述。若今后需要,可以再补习。 一、为什么使用深层表示 解决问题时其实并不需要很大的神经网络,但是得有深度,得有比较多的隐藏层。这是为什么…

DBS note7 (end):DB Design

目录 一、前言 二、引言 三、Entity-Relationship Models(实体-关系模型) 1、关系约束 三、函数依赖和正则化 1、BCNF分解 2、无损分解 3、依赖关系保留分解 一、前言 略读过一遍CS186,对于CS186来说,绝对不止这 7 篇笔记…

SSM项目实战-登录验证成功并路由到首页面,Vue3+Vite+Axios+Element-Plus技术

1、util/request.js import axios from "axios";let request axios.create({baseURL: "http://localhost:8080",timeout: 50000 });export default request 2、api/sysUser.js import request from "../util/request.js";export const login (…

分布式锁框架Lock4j简单使用

最近项目中使用到了Lock4j的分布式锁组件,小编今天就带大家学习一下该框架,以及如何在我们项目中进行集成使用。 一、简介 Lock4j是一个分布式锁组件,它提供了多种不同的支持以满足不同性能和环境的需求;它基于Spring AOP&#…

SQL Server数据库数据文件的迁移

SQL Server数据库数据文件的迁移 如何将一台电脑中的SQL Server数据库数据文件迁移到另一台电脑上? 一、首先查看数据库文件保存在电脑中的位置; 如下图所示:右键-》属性-》数据库设置;可以找到数据库文件保存位置; …

【Node.js】Node.js环境下载与安装教程(Windows系统)

前言 Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,可以让你使用JavaScript进行服务器端编程。本教程将向你展示如何在Windows系统上下载和安装Node.js环境。 下载 首先,你需要下载Node.js环境。 打开Node.js官方网站:https://no…

Linux系列-1 Linux启动流程——init与systemd进程

背景: 最近对所有项目完成了一个切换,服务管理方式由: init-> systemd。对相关知识进行总结一下。 1.启动流程 服务器的整体启动流程如下图所示: POST: 计算机通电后进行POST( Power-On Self-Test )加电自检&am…

力扣每日一题day26[42. 接雨水]

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 示例 1: 输入:height [0,1,0,2,1,0,1,3,2,1,2,1] 输出:6 解释:上面是由数组 [0,1,0,2,1,0,1,3,2,1,2,1] …

MQ - KAFKA 基础篇

##1、KAFKA的核心组件/API Producer API,它允许应用程序向一个或多个 topics 上发送消息记录 Consumer API,允许应用程序订阅一个或多个 topics 并处理为其生成的记录流 Streams API,它允许应用程序作为流处理器,从一个或多个主…

github问题解决(持续更新中)

1、ssh: connect to host github.com port 22: Connection refused 从.ssh文件夹中新建文件名为config,内容为: Host github.com Hostname ssh.github.com Port 4432、解决 git 多用户提交切换问题 使用系统命令ssh创建rsa公私秘钥 C:\Users\fyp01&g…

使用Redis构建简易社交网站(1)-创建用户与动态界面

目的 本文目的:实现简易社交网站中创建新用户和创建新动态功能。(完整代码附在文章末尾) 相关知识 本文将教会你掌握:1.redis基本命令,2.python基本命令。 redis基本命令 hget:从哈希中获取指定域的值…

vitepress的使用

创建项目并启动项目 // 1.创建项目,直接在空项目下安装vitepress(npm/yarn等都可以,这个可以看官网,官网给了好几种安装方式) yarn add -D vitepress // 2.初始化配置项目(npm/官网也给了多种包管理工具的安装方式) npx vitepress init // 初始化命令执行完会遇到以下几个问题…

Python---函数递归---练习:猴子吃桃问题(本文以递归算法 解法为主)

相关链接:Python---函数递归---练习:斐波那契数列(本文以递归算法为主)-CSDN博客 案例:猴子吃桃问题 猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。…

Web前端监控的方案

Web前端监控的方案 前端监控是一个非常重要的话题,对于业务的发展意义重大,就像遍布在城市各处的探头,实时监测整座城市的运行状况,保证系统的稳定、高效运行。 前端监控的意义 前端监控,对于业务和团队的重要性&am…

Kafka 的起源和背景

Apache Kafka 是一个分布式流处理平台,被广泛用于构建实时数据流应用程序和大数据处理系统。本文将深入探讨 Kafka 的起源、设计原则以及它在大数据领域中的重要作用。 大数据和实时数据处理背景 在大数据时代,处理海量数据和实时数据成为了一项关键挑…

C++学习之路(十七)C++ 用Qt5实现一个工具箱(增加托盘图标并且增加显示和退出菜单)- 示例代码拆分讲解

上篇文章,我们用 Qt5 实现了在小工具箱中添加了《为屏幕颜色提取功能增加一个点击复制的功能》功能。今天我们增加一个比较正式点的功能,就是增加托盘图标并且增加显示和退出菜单(越来越像回事了吧 😁 )。下面我们就来…

Python---函数递归---练习:使用递归求N的阶乘(如n=100)(本文以递归算法 解法为主)

相关链接:Python---函数递归---练习:斐波那契数列(本文以递归算法为主)-CSDN博客 Python---if选择判断结构、嵌套结构(if elif else)_python多重if嵌套-CSDN博客 案例:使用递归求N的阶乘&…

RabbitMQ架构是什么样的

publisher 生产者,发送消息的一方。 consumer 消费者,消费消息的一方。 queue 队列,存储消息。生产者投递的消息会暂存在消息队列中,等待消费者处理。 exchange 交换机,负责消息路由,生产者发送的消息由交换…

ORA-00257: archiver error. Connect internal only, until freed……

今天给客户测 试问题,让客户把数据发过来了。解压缩后一看,他们还是用的oracle 815版本的(他们exp导出时,带了导出日志,从导出日志中看出来是oracle 815版本的),不过没有关系,低版本的exp是可以用高版本的i…

C语言扫雷小游戏

以下是一个简单的C语言扫雷小游戏的示例代码&#xff1a; #include <stdio.h>#include <stdlib.h>#include <time.h>#define BOARD_SIZE 10#define NUM_MINES 10int main() { int board[BOARD_SIZE][BOARD_SIZE]; int num_flags, num_clicks; int …