Tailwind CSSTailwind CSS
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
Home
  • Tailwind CSS 书籍目录
  • Vue 3 开发实战指南
  • React 和 Next.js 学习
  • TypeScript
  • React开发框架书籍大纲
  • Shadcn学习大纲
  • Swift 编程语言:从入门到进阶
  • SwiftUI 学习指南
  • 函数式编程大纲
  • Swift 异步编程语言
  • Swift 协议化编程
  • SwiftUI MVVM 开发模式
  • SwiftUI 图表开发书籍
  • SwiftData
  • ArkTS编程语言:从入门到精通
  • 仓颉编程语言:从入门到精通
  • 鸿蒙手机客户端开发实战
  • WPF书籍
  • C#开发书籍
learn
  • Java编程语言
  • Kotlin 编程入门与实战
  • /python/outline.html
  • AI Agent
  • MCP (Model Context Protocol) 应用指南
  • 深度学习
  • 深度学习
  • 强化学习: 理论与实践
  • 扩散模型书籍
  • Agentic AI for Everyone
langchain
  • 第二章:基础语法

第二章:基础语法

2.4 数组

1. 数组的概念

数组是Java中用于存储相同数据类型的固定大小的连续内存空间。数组中的每个元素通过索引(从0开始)访问,是Java中最基础的数据结构之一。

2. 数组的声明与初始化

2.1 声明数组

// 语法:数据类型[] 数组名;
int[] numbers;      // 推荐写法
String names[];     // 兼容C风格的写法(不推荐)

2.2 初始化数组

// 静态初始化(直接赋值)
int[] arr1 = {1, 2, 3}; 

// 动态初始化(指定长度)
int[] arr2 = new int[5]; // 默认值为0
String[] arr3 = new String[3]; // 默认值为null

3. 多维数组

Java支持多维数组(如二维数组):

// 二维数组声明与初始化
int[][] matrix = {{1, 2}, {3, 4}};
// 动态初始化
double[][] table = new double[3][4];

4. 数组的常用操作

4.1 访问与修改元素

int[] arr = {10, 20, 30};
System.out.println(arr[1]); // 输出20
arr[2] = 40; // 修改第三个元素

4.2 遍历数组

// 方式1:for循环
for (int i = 0; i < arr.length; i++) {
    System.out.println(arr[i]);
}

// 方式2:增强for循环(Java 5+)
for (int num : arr) {
    System.out.println(num);
}

4.3 数组长度

通过length属性获取:

int len = arr.length; // 注意不是方法(无括号)

5. 数组的工具类(Arrays)

Java提供java.util.Arrays工具类:

import java.util.Arrays;

// 排序
Arrays.sort(arr);

// 二分查找(需先排序)
int index = Arrays.binarySearch(arr, 20);

// 转换为字符串
System.out.println(Arrays.toString(arr));

6. 注意事项

  1. 索引越界:访问超出0 ~ length-1范围会抛出ArrayIndexOutOfBoundsException。
  2. 固定长度:数组一旦创建,大小不可改变(需动态扩容时可使用ArrayList)。
  3. 内存分配:数组是对象,存储在堆内存中。

7. 示例代码

public class ArrayDemo {
    public static void main(String[] args) {
        int[] scores = {85, 92, 78, 90};
        
        // 计算平均分
        double sum = 0;
        for (int score : scores) {
            sum += score;
        }
        System.out.println("平均分:" + sum / scores.length);
    }
}

8. 常见面试题

  • 数组和ArrayList的区别?
  • 如何实现数组的深拷贝?
  • 多维数组在内存中如何存储?
Last Updated:: 3/27/25, 12:48 PM