Java中数组的概念及用法

发布时间:2021-08-16 17:46:15 作者:chen
来源:亿速云 阅读:145
# Java中数组的概念及用法

## 一、数组的基本概念

### 1.1 什么是数组
数组(Array)是Java中最基本的数据结构之一,它是**相同数据类型元素的有序集合**。数组在内存中占据一块连续的内存空间,通过索引(下标)可以快速访问其中的元素。

```java
// 声明一个整型数组
int[] numbers;

1.2 数组的特点

1.3 数组的分类

  1. 一维数组:线性结构
  2. 多维数组:数组的数组(如二维数组)

二、数组的声明与初始化

2.1 数组声明

Java提供两种声明方式:

// 方式1(推荐)
int[] arr1;

// 方式2(C语言风格)
int arr2[];

2.2 数组初始化

静态初始化

// 完整格式
String[] names = new String[]{"张三","李四","王五"};

// 简化格式
double[] scores = {98.5, 87.0, 76.5};

动态初始化

// 指定长度但不赋初值(自动初始化)
char[] letters = new char[26]; 

// 先声明后初始化
boolean[] flags;
flags = new boolean[10];

2.3 默认值规则

数据类型 默认值
byte/short/int 0
long 0L
float 0.0f
double 0.0d
char ’\u0000’
boolean false
引用类型 null

三、数组的基本操作

3.1 访问数组元素

int[] primes = {2,3,5,7,11};
System.out.println(primes[0]); // 输出2
System.out.println(primes[4]); // 输出11

3.2 修改数组元素

primes[1] = 13; // 将第二个元素改为13

3.3 获取数组长度

System.out.println(primes.length); // 输出5

3.4 遍历数组

for循环

for(int i=0; i<primes.length; i++){
    System.out.println(primes[i]);
}

增强for循环

for(int num : primes){
    System.out.println(num);
}

Arrays.toString()

System.out.println(Arrays.toString(primes));

四、多维数组

4.1 二维数组声明

// 静态初始化
int[][] matrix = {{1,2,3},{4,5,6},{7,8,9}};

// 动态初始化
double[][] temps = new double[3][4];

4.2 不规则数组

int[][] triangle = new int[3][];
triangle[0] = new int[1];
triangle[1] = new int[2];
triangle[2] = new int[3];

4.3 多维数组遍历

for(int i=0; i<matrix.length; i++){
    for(int j=0; j<matrix[i].length; j++){
        System.out.print(matrix[i][j] + " ");
    }
    System.out.println();
}

五、数组常用算法

5.1 数组排序

冒泡排序

void bubbleSort(int[] arr){
    for(int i=0; i<arr.length-1; i++){
        for(int j=0; j<arr.length-1-i; j++){
            if(arr[j] > arr[j+1]){
                int temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}

使用Arrays.sort()

Arrays.sort(arr); // 快速排序

5.2 数组查找

线性查找

int linearSearch(int[] arr, int key){
    for(int i=0; i<arr.length; i++){
        if(arr[i] == key){
            return i;
        }
    }
    return -1;
}

二分查找(需有序)

int binarySearch(int[] arr, int key){
    int low = 0, high = arr.length-1;
    while(low <= high){
        int mid = (low + high)/2;
        if(arr[mid] == key) return mid;
        else if(arr[mid] < key) low = mid+1;
        else high = mid-1;
    }
    return -1;
}

5.3 数组复制

// System.arraycopy()
int[] src = {1,2,3,4,5};
int[] dest = new int[5];
System.arraycopy(src, 0, dest, 0, src.length);

// Arrays.copyOf()
int[] copy = Arrays.copyOf(src, src.length);

六、Arrays工具类

6.1 常用方法

方法 说明
Arrays.toString() 将数组转换为字符串
Arrays.sort() 数组排序
Arrays.binarySearch() 二分查找
Arrays.fill() 填充数组
Arrays.equals() 比较数组内容是否相同
Arrays.copyOf() 数组复制

6.2 使用示例

// 填充数组
int[] nums = new int[5];
Arrays.fill(nums, 100);

// 比较数组
int[] a = {1,2,3};
int[] b = {1,2,3};
System.out.println(Arrays.equals(a,b)); // true

七、数组与集合的转换

7.1 数组转List

String[] arr = {"A","B","C"};
List<String> list = Arrays.asList(arr); // 固定长度List

7.2 List转数组

List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
Integer[] array = list.toArray(new Integer[0]);

八、数组的应用场景

8.1 适合使用数组的场景

  1. 处理大量同类型数据
  2. 需要快速随机访问元素
  3. 算法要求固定大小的数据结构
  4. 多维数据表示(如矩阵)

8.2 不适合的场景

  1. 需要频繁插入/删除元素
  2. 数据量变化较大
  3. 需要存储不同类型数据

九、数组的注意事项

9.1 常见错误

// 1. 数组越界
int[] arr = new int[3];
System.out.println(arr[3]); // ArrayIndexOutOfBoundsException

// 2. 空指针异常
int[] arr2 = null;
System.out.println(arr2[0]); // NullPointerException

9.2 性能考虑

  1. 访问元素:O(1)时间复杂度
  2. 查找元素:未排序时O(n),排序后可使用二分查找O(log n)
  3. 插入/删除:需要移动元素,效率较低

十、Java 8+中的数组增强

10.1 Stream API操作

int[] numbers = {1,2,3,4,5};
int sum = Arrays.stream(numbers).sum();
long count = Arrays.stream(numbers).count();

10.2 parallelSort并行排序

int[] largeArray = new int[1000000];
Arrays.parallelSort(largeArray); // 利用多核并行排序

结语

数组作为Java中最基础的数据结构,虽然简单但在实际开发中应用广泛。掌握数组的核心概念和常用操作是Java程序员的必备技能。随着Java版本的更新,数组的功能也在不断扩展,建议结合具体业务场景合理选择数组或其他集合类型。

(全文约6700字) “`

注:由于篇幅限制,这里展示的是精简后的文章框架和核心内容。完整的6700字文章需要扩展每个章节的详细说明、更多代码示例、性能分析、实际应用案例等内容。您可以根据这个框架进一步补充完善。

推荐阅读:
  1. Docker的概念及用法
  2. JavaScript中数组的用法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java

上一篇:mysql5.7的安装实例方法

下一篇:Python怎么对文件进行加密

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》