行业资讯 2025年08月6日
0 收藏 0 点赞 377 浏览 2016 个字
摘要 :

文章目录 1.在声明时初始化数组 2. 循环初始化数组 3.Arrays.fill() API 4.Arrays.setAll() API 5. 使用流 6. Arrays.copyOf() 和 Arrays.copyOfRange() 七、结论 学习……




  • 1.在声明初始化数组
  • 2. 循环初始化数组
  • 3.Arrays.fill() API
  • 4.Arrays.setAll() API
  • 5. 使用流
  • 6. Arrays.copyOf() 和 Arrays.copyOfRange()
  • 七、结论

学习使用不同的技巧声明和初始化数组以及它们之间的区别。除了直接访问数组外,我们还将使用提供了许多有用方法的java.util.Arrays和Stream API来处理Java中的数组。

请注意,数组在内存中是连续存储的,因此在初始化时必须提到数组的长度或大小。稍后,我们可以在指定的索引位置添加数组中的元素。

此外,值得回顾的是,数组索引始终从0开始。数组的第一个元素位于索引0处。如果数组的大小为n,那么数组的最后一个元素将位于索引n-1处。

1.在声明时初始化数组

在单个语句中声明和初始化数组(使用数组初始化器)是一个好主意,前提是有如下两个条件:

  • 我们预先知道数组中的元素。
  • 数组的大小较小。
String status[] = new String[] { \"Active\", \"Inactive\", \"Purged\" };

请注意,在声明时初始化数组时,new 类型[] 是可选的。

String status[] = { \"Active\", \"Inactive\", \"Purged\" };

如果我们在声明数组后尝试初始化数组,则new类型信息是必需的,否则,我们将得到编译错误“数组常量只能在初始化程序中使用”。

//编译错误
String status[] = new String[3];
// 这一句会编译报错
//status = {\"Active\", \"Inactive\", \"Purged\" };

2. 循环初始化数组

当一次性初始化一个数组时,这种方法很有用。最简单的方法是循环遍历数组索引并将所需的元素放入指定的索引位置。

int nums[] = new int[5];
for (int i = 0; i < nums.length; i++) {
    nums[i] = i;
}

3.Arrays.fill() API

fill()方法采用一个值并将指定的值分配给指定数组的每个元素。在给定的示例中,我们用 1 填充所有数组元素。

int numbers[] = new int[10];
Arrays.fill(numbers, 1);  //[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]

请注意,fill() 是一个重载方法,可以获取数组必须填充到的起始索引和结束索引。在给定的示例中,我们从索引位置 2 到 9 填充数组。

int numbers[] = new int[10];
Arrays.fill(numbers, 2, 9, 1); //[0, 0, 1, 1, 1, 1, 1, 1, 1, 0]

4.Arrays.setAll() API

设置setAll()数组的所有元素,使用提供的生成器函数来计算每个元素。

int[] squares = new int[6];
Arrays.setAll(squares, p -> p * p);    //[0, 1, 4, 9, 16, 25]

请注意,生成器函数抛出的任何异常都会转发给调用者,并且数组将处于不确定状态。

5. 使用流

Java Streams API 提供了许多内置类,可以生成流并支持对这些流进行顺序和并行聚合操作。IntStream、LongStream和DoubleStream是此类流的示例。

int[] intArray = IntStream.range(1, 11).toArray();
int[] intArray = IntStream.rangeClosed(1, 10).toArray();
int[] intArray = IntStream.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10).toArray();

6. Arrays.copyOf() 和 Arrays.copyOfRange()

如果我们想要一个包含现有数组项的新数组,copyOf() 方法非常有用。新数组的大小可以小于或大于现有数组。

在复制现有数组的项之后,新数组将被截断或填充为 null 以获得所需的长度。

int array[] = {0, 1, 2, 3, 4, 5};
int[] small = Arrays.copyOf(array, 3);  //[0, 1, 2]
int[] largeCopy = Arrays.copyOf(array, 10); //[0, 1, 2, 3, 4, 5, 0, 0, 0, 0]

类似地,该copyOfRange()方法可用于将旧数组的项目范围复制到新数组中。

int array[] = {0, 1, 2, 3, 4, 5};
int[] smallRange = Arrays.copyOfRange(array, 1, 3); // [1, 2]
int[] largeCopyRange = Arrays.copyOfRange(array, 2, 10); // [2, 3, 4, 5, 0, 0, 0, 0]

七、结论

在这个简短的 Java 教程中,我们学习了在 Java 中声明和初始化数组的不同方法。探索 Java 数组指南中的其他主题。

微信扫一扫

支付宝扫一扫

版权: 转载请注明出处:https://www.zuozi.net/9269.html

管理员

相关推荐
2025-08-06

文章目录 一、Reader 接口概述 1.1 什么是 Reader 接口? 1.2 Reader 与 InputStream 的区别 1.3 …

988
2025-08-06

文章目录 一、事件溯源 (一)核心概念 (二)Kafka与Golang的优势 (三)完整代码实现 二、命令…

465
2025-08-06

文章目录 一、证明GC期间执行native函数的线程仍在运行 二、native线程操作Java对象的影响及处理方…

348
2025-08-06

文章目录 一、事务基础概念 二、MyBatis事务管理机制 (一)JDBC原生事务管理(JdbcTransaction)…

456
2025-08-06

文章目录 一、SnowFlake算法核心原理 二、SnowFlake算法工作流程详解 三、SnowFlake算法的Java代码…

517
2025-08-06

文章目录 一、本地Jar包的加载操作 二、本地Class的加载方法 三、远程Jar包的加载方式 你知道Groo…

832
发表评论
暂无评论

还没有评论呢,快来抢沙发~

助力内容变现

将您的收入提升到一个新的水平

点击联系客服

在线时间:08:00-23:00

客服QQ

122325244

客服电话

400-888-8888

客服邮箱

122325244@qq.com

扫描二维码

关注微信客服号