java数组是什么?怎么使用?

基本概念

数组是Java中一种基本的数据结构,用于存储固定大小的相同类型的数据元素。在Java中,数组是对象,存储在堆内存中,数组在内存中是连续分配的,可以通过索引快速访问元素。数组的索引从0开始,最大索引为数组长度减1。

数组的声明与初始化

数组的声明需要指定元素类型和数组名称。初始化可以在声明时直接完成,也可以在后续代码中完成。

数组的声明方式为数据类型[] 数组名或数据类型 数组名[]。初始化分为静态初始化和动态初始化。

静态初始化直接指定元素值:

// 静态初始化   直接初始化数组
int[] arr1 = {1, 2, 3};

String[] arr2 = new String[]{"A", "B"};

动态初始化指定长度后赋值:

// 声明数组
int[] numbers;

// 初始化数组
numbers = new int[5];

// 赋值
numbers [0] = 10;

// 声明并初始化数组
int[] scores = new int[3];

// 赋值
scores [0] = 10;

数组的访问与修改

数组元素可以通过索引访问和修改。索引必须是整数,且不能超出数组范围(即数组长度减1),否则会抛出ArrayIndexOutOfBoundsException

数组的访问通过索引完成,索引从0开始。使用方括号[]指定索引位置,直接获取对应元素的值。例如:

int[] numbers = {10, 20, 30, 40, 50};

// 访问第一个元素,值为10
int firstElement = numbers[0]; 

// 访问第三个元素,值为30
int thirdElement = numbers[2]; 

通过索引定位到数组元素后,可以直接赋值来修改元素的值:

int[] numbers = {10, 20, 30, 40};

numbers[1] = 200; // 修改第二个元素为200

System.out.println(numbers[1]); // 输出200

数组的遍历

数组的遍历可以通过for循环或使用增强for循环(for-each循环)、while循环以及使用Java 8的Stream API实现。

  1. 通过for循环遍历:
int[] numbers = {1, 2, 3, 4, 5};

// 使用for循环
for (int i = 0; i < numbers.length; i++) {
    System.out.println(numbers[i]);
}

  1. 使用增强for循环(for-each循环):
int[] numbers = {1, 2, 3, 4, 5};

// 使用for-each循环
for (int num : numbers) {
    System.out.println(num);
}
  1. while循环:
int[] numbers = {1, 2, 3, 4, 5};
int i = 0;

// while循环
while (i < numbers.length) {
    System.out.println(numbers[i]);
    i++;
}
  1. 使用Java 8的Stream API:
int[] numbers = {1, 2, 3, 4, 5};

// 使用Stream API
Arrays.stream(numbers).forEach(System.out::println);

多维数组

Java支持多维数组,最常见的是二维数组。多维数组的声明和初始化与一维数组类似。

// 声明二维数组
int[][] matrix;

// 初始化二维数组
matrix = new int[3][3];

// 直接初始化二维数组
int[][] grid = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
};

// 访问二维数组元素
int value = grid[1][2]; // 6

注意:
1、多维数组在内存中不一定是连续存储的
2、访问不存在的索引会抛出ArrayIndexOutOfBoundsException
3、未初始化的第二维数组默认为null
4、使用Arrays.deepToString()可以方便地打印多维数组内容
5、多维数组在处理矩阵、表格数据、图像处理等场景中非常有用。

数组的常用操作

Java提供了Arrays类,包含许多对数组操作的实用方法。

  1. 数组排序:
import java.util.Arrays;

int[] numbers = {5, 3, 8, 1, 2};

// 数组排序
Arrays.sort(numbers); // {1, 2, 3, 5, 8}
  1. 查找元素:
import java.util.Arrays;

int[] numbers = {5, 3, 8, 1, 2};

// 查找元素
int index = Arrays.binarySearch(numbers, 3); // 2
  1. 填充数组:
import java.util.Arrays;

int[] numbers = {5, 3, 8, 1, 2};

// 填充数组
Arrays.fill(numbers, 0); // {0, 0, 0, 0, 0}
  1. 复制数组
import java.util.Arrays;

int[] numbers = {5, 3, 8, 1, 2};

// 复制数组
int[] copy = Arrays.copyOf(numbers, numbers.length);

数组与集合的转换

数组可以转换为集合(如List),方便使用集合提供的丰富操作。

import java.util.Arrays;
import java.util.List;

Integer[] numbers = {1, 2, 3, 4, 5};

// 数组转List
List<Integer> list = Arrays.asList(numbers);

// 使用 Java 8 Stream (推荐)
List<Integer> listStream = Arrays.stream(numbers ).collect(Collectors.toList());

// 数组转set
Set<Integer> set = new HashSet<>(Arrays.asList(array));
// 或使用 Stream
Set<Integer> set = Arrays.stream(array).collect(Collectors.toSet());

// List转数组
Integer[] array = list.toArray(new Integer[0]);

注意:
使用 Arrays.asList()返回的 List 是 Arrays 的内部类,不是 ArrayList,固定大小(不能添加或删除元素)

数组的注意事项

数组的长度是固定的,一旦创建无法改变。如果需要动态扩展或收缩,可以考虑使用ArrayList等集合类。

数组可以存储基本类型和对象类型,但对象数组存储的是对象的引用,而非对象本身。

数组的默认初始化值取决于元素类型。数值类型为0,布尔类型为false,对象类型为null

int[] intArray = new int[3]; // {0, 0, 0}
boolean[] boolArray = new boolean[2]; // {false, false}
String[] strArray = new String[3]; // {null, null, null}

通过以上内容,可以全面了解Java数组的基本概念、使用方法及常见操作。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值