数组

1.数组的核心特点

  • 长度固定:一旦创建,长度不可改变。
  • 类型统一:所有元素的数据类型必须相同。
  • 连续内存:数组在内存中是一块连续空间,通过索引(下标)快速访问。
  • 索引从 0 开始:第一个元素索引为 0,最后一个为 length - 1

2. 声明与创建

int[] arr = new int[5];  // 创建一个长度为5的int数组,元素默认值0

int[] arr = {1, 2, 3, 4, 5};                     // 简化写法

int[] arr2 = new int[]{1, 2, 3, 4, 5};           // 完整写法

3.数组长度与元素访问

  • 获取长度数组名.length
  • 访问元素数组名[索引]
  • 修改元素数组名[索引] = 新值
int[] scores = new int[3];
scores[0] = 90;
scores[1] = 85;
scores[2] = 92;
System.out.println("长度:" + scores.length);   // 3
System.out.println("第二个元素:" + scores[1]); // 85

4. 遍历数组

int[] nums = {10, 20, 30};
//普通 for 循环
for (int i = 0; i < nums.length; i++) {
    System.out.println(nums[i]);
}

//增强 for 循环(for-each)
//for-each 只能读取元素,不能修改数组元素的值。
for (int n : nums) {
    System.out.println(n);
}

//使用 Arrays.toString() 快速打印
import java.util.Arrays;
System.out.println(Arrays.toString(nums)); // 输出 [10, 20, 30]

5. 多维数组

// 3行4列的矩阵
int[][] matrix = new int[3][4];

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

// 不规则数组(每行长度可以不同)
int[][] ragged = new int[2][];
ragged[0] = new int[3];
ragged[1] = new int[5];

//遍历二维数组
for (int i = 0; i < matrix2.length; i++) {
    for (int j = 0; j < matrix2[i].length; j++) {
        System.out.print(matrix2[i][j] + " ");
    }
    System.out.println();
}

6.数组的常用操作

方法作用
Arrays.sort(arr)升序排序
Arrays.binarySearch(arr, key)二分查找(要求已排序)
Arrays.fill(arr, value)将数组所有元素填充为同一个值
Arrays.copyOf(arr, newLength)复制数组,可截断或填充默认值
Arrays.equals(arr1, arr2)比较两个数组内容是否相等
int[] arr = {5, 2, 8, 1};

//升序排序
Arrays.sort(arr); // arr = [1, 2, 5, 8]
System.out.println(Arrays.toString(arr));

//二分查找(要求已排序)
int key = 8;
System.out.println(Arrays.binarySearch(arr, key)); //返回的是下标 3

//将数组所有元素填充为同一个值
Arrays.fill(arr, 0); // arr = [0, 0, 0, 0]
System.out.println(Arrays.toString(arr));

int[] a = {5, 2, 8, 1};
//复制数组,可截断或填充默认值
int [] b =Arrays.copyOf(a, 8);
int [] c =Arrays.copyOf(a, 2);
System.out.println(Arrays.toString(b));
System.out.println(Arrays.toString(c));

int[] d = {5, 2, 8, 1};
//比较两个数组内容是否相等
System.out.println(Arrays.equals(a,b));
System.out.println(Arrays.equals(a,d));

7.异常

//数组越界异常(ArrayIndexOutOfBoundsException)
int[] arr = new int[2];
arr[2] = 10;  // 错误!最大索引是 1

//空指针异常(NullPointerException)
int[] arr = null;
System.out.println(arr.length); // 错误!arr 未引用任何对象

8.可变参数

本质上就是数组

public static int sum(int... numbers) {
    int total = 0;
    for (int n : numbers) {
        total += n;
    }
    return total;
}

// 调用
int result = sum(1, 2, 3, 4);   // numbers 被包装为 int[]{1,2,3,4}
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇