数组基础知识

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

一、数组是什么

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

数组的特点:

  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. 常见操作:遍历、求和、求最大值、查找、反转。
相关推荐
Flynn Liang32 分钟前
AiServices 源码级拆解:一个接口如何变成 RAG Agent
java·langchain·源码分析·rag·langchain4j·aiservices
Flynn Liang1 小时前
LangChain4j 1.23 架构全景:Java 大模型应用的 6 层抽象
java·langchain·大模型·rag·ai agent·langchain4j
聪明的笨猪猪1 小时前
实际工程问题:AI生成Redis分布式锁的原子性缺陷导致库存超卖
java·经验分享·面试·ai编程
软件技术NINI2 小时前
基于SpringBoot和Vue的新能源汽车销售推荐系统
java·vue.js·spring boot·后端·汽车·毕业设计·毕设
Flynn Liang3 小时前
LangChain4j 生产级工程骨架:12 个模块 + Docker 一键启动
java·spring boot·langchain·rag·langchain4j
噢,我明白了4 小时前
JAVA中的一些基础应用知识点
java·开发语言
SL_staff4 小时前
私有化低代码不是妥协,而是企业级数字化的自主可控主航道
java
装不满的克莱因瓶4 小时前
【SpringAI Alibaba】ReactAgent结构化输出OutputType与OutputSchema实战
java·人工智能·ai·springai·springaialibaba
时间的拾荒人5 小时前
Redis 入门详解:核心特性、重要文件与全局命令实战
开发语言·redis·面试
秋天的怀念_David5 小时前
算法一千零一夜 · 第二十八夜 注册
java·程序人生·算法