数组基础知识

知识点:数组的声明、初始化、元素访问、赋值、常见操作

一、数组是什么

数组:一组相同类型数据的容器,在内存中连续存放。

数组的特点:

  1. 只能存储同一种类型的数据;
  2. 长度固定,创建后不能随便改变;
  3. 每个数据叫 "元素",通过索引 / 下标访问;
  4. 索引从 0 开始,不是从 1 开始。

二、数组的声明和初始化

2.1 声明数组

告诉 Java:"我要一个什么类型的数组"。

复制代码
// 两种常用写法
int[] arr;   // 推荐:中括号跟在类型后面
int arr[];   // 语法正确,但不推荐

2.2 静态初始化:直接给出元素内容

格式:

复制代码
数据类型[] 数组名 = {元素1, 元素2, 元素3, ...};

示例:

复制代码
public class ArrayDemo1 {
    public static void main(String[] args) {
        // 静态初始化:创建数组并直接赋值
        int[] arr = {10, 20, 30, 40, 50};

        System.out.println(arr[1]); // 输出20,索引从0开始
    }
}

2.3 动态初始化:先指定长度,之后再赋值

格式:

复制代码
数据类型[] 数组名 = new 数据类型[数组长度];

示例:

复制代码
public class ArrayDemo2 {
    public static void main(String[] args) {
        // 动态初始化:创建一个长度为5的int数组
        int[] arr = new int[5];

        // 之后给每个元素赋值
 arr[0] = 10;
        arr[1] = 20;
        arr[2] = 30;
        arr[3] = 40;
        arr[4] = 50;

        System.out.println(arr[2]); // 输出30
    }
}

注意:动态初始化时,数组元素会有默认值。

  • int、byte、short、long 默认值是 0
  • float、double 默认值是 0.0
  • char 默认值是空字符
  • boolean 默认值是 false
  • 引用类型默认值是 null

三、数组元素的访问和赋值

3.1 访问元素

格式:

复制代码
数组名[索引];

示例:

复制代码
public class ArrayDemo3 {
    public static void main(String[] args) {
        int[] arr = {10, 20, 30, 40, 50};

        System.out.println(arr[0]); // 10
        System.out.println(arr[2]); // 30
        System.out.println(arr[4]); // 50
    }
}

3.2 给元素赋值

格式:

复制代码
数组名[索引] = 值;

示例:

复制代码
public class ArrayDemo4 {
    public static void main(String[] args) {
        int[] arr = new int[3];

        arr[0] = 100;
        arr[1] = 200;
        arr[2] = 300;

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

3.3 数组长度

数组长度:数组中元素的个数。 格式:数组名.length

复制代码
public class ArrayDemo5 {
    public static void main(String[] args) {
        int[] arr = {10, 20, 30, 40, 50};
        System.out.println(arr.length); // 输出5
    }
}

3.4 索引越界异常

索引范围:0 ~ 数组长度-1。 如果访问不存在的索引,会报错:ArrayIndexOutOfBoundsException。

复制代码
public class ArrayDemo6 {
    public static void main(String[] args) {
        int[] arr = {10, 20, 30};
        // arr[3] = 40; // 报错!索引最大是2
    }
}

四、数组的常见操作

4.1 遍历数组

遍历:把数组中的每个元素依次取出来。

复制代码
public class ArrayDemo7 {
    public static void main(String[] args) {
        int[] arr = {10, 20, 30, 40, 50};

        // for循环遍历
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
    }
}

4.2 求和

复制代码
public class ArrayDemo8 {
    public static void main(String[] args) {
        int[] arr = {10, 20, 30, 40, 50};
        int sum = 0;

        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }

        System.out.println("总和:" + sum); // 150
    }
}

4.3 求最大值

复制代码
public class ArrayDemo9 {
    public static void main(String[] args) {
        int[] arr = {12, 45, 9, 68, 23};

        int max = arr[0]; // 先把第一个元素的值20;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] > max) {
            max = arr[i];
        }

        System.out.println("最大值:" + max);
    }
}

4.4 元素查找

判断某个数在数组中是否存在:

复制代码
public class ArrayDemo10 {
    public static void main(String[] args) {
        int[] arr = {10, 20, 30, 40, 50};
        int target = 30;
        boolean isExist = false;

        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == target) {
                isExist = true;
                break; // 找到就<[SILENT_never_used_51bce0c785ca2f68081bfa7d91973934]>
            }
        }

        System.out.println("存在:" + target + "吗?" + isExist);
    }
}

4.5 数组反转

把数组元素倒过来存放。

复制代码
public class ArrayDemo11 {
    public static void main(String[] args) {
        int[] arr = {1, 2, 3, 4, 5};

        // 反转:交换元素位置
        for (int i = 0; i < arr.length / 2; i++) {
            int temp = arr[i];
            arr[i] = arr[arr.length - 1 - i];
            arr[arr.length - 1 - i] = temp;
        }

        // 输出结果
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i] + " ");
        }
        // 输出:5 4 3 2 1
    }
}

本章小结

  1. 数组:相同类型、长度固定的元素容器,索引从 0 开始。
  2. 初始化:静态初始化直接写元素;动态初始化先指定长度。
  3. 访问 / 赋值 :数组名[索引],注意索引不能越界。
  4. 常见操作:遍历、求和、求最大值、查找、反转。
相关推荐
泡海椒1 小时前
金融报表开发:jquick-pdf K 线图 PDF 可视化解决方案
java·开发语言·金融·pdf
余槐i1 小时前
rollbackFor 不设置,Checked 异常不回滚:Spring 默认规则与两行修复的取舍
java·spring boot·后端·spring·事务管理
孙启超1 小时前
【AI开发之Rust】第 17 课:项目总览与核心架构 —— AI 助手 Rust 核心从 0 到 1
开发语言·后端·rust
❀͜͡傀儡师1 小时前
Spring AI 集成 TypeSafe:用判断模型处理工单分流与链路决策
java·人工智能·spring
bro_Java6661 小时前
《栈与队列:数据结构的“双生花”》
java·数据结构·编辑器
花开路口2 小时前
线程安全完全指南:从 Java 到 Kotlin,一文吃透并发编程
java·kotlin
她说..2 小时前
IntelliJ IDEA 快捷键速查表(Mac 版)
java·macos·intellij-idea
码匠许师傅2 小时前
【C++三方组件】Asio 上篇:回调式 TCP 客户端与服务端
开发语言·c++·tcp/ip
EatFan2 小时前
JunoYi 框架实践:Spring Boot 项目为什么拆成 framework、module、server 三层?
java·spring boot·后端·framework·module·模块化·junoyi