数组基础知识

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

一、数组是什么

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

数组的特点:

  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. 常见操作:遍历、求和、求最大值、查找、反转。
相关推荐
紧跟先前的步伐13 分钟前
Go AI Agent 实战 03|Token、上下文窗口与模型调用成本
java·人工智能·golang
benchmark_cc26 分钟前
Python 量化系统如何设计统一的数据访问接口:从策略解耦到数据层架构
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
const_qiu39 分钟前
第四章 00:开篇 —— 从「会聊天」到「记得住、会干活、能协作」
java·开发语言·人工智能·python
Wang's Blog44 分钟前
Java 项目实战: 交友项目 - 个人资料管理的更新接口实现与坑
java·开发语言·交友
Promising_GEO1 小时前
GEE实战02期:从卫星波段开始:利用 Sentinel-2 自己计算 NDVI
java·sentinel·遥感·空间分析
大文说跨境1 小时前
亚马逊多账号管理浏览器怎么选?云登/紫鸟/AdsPower 对比
java·前端·自动化
CoderYanger1 小时前
Java EE 进阶:4.Spring Web MVC 入门(第一弹)
java·开发语言·前端·spring·面试·java-ee·mvc
估值探索者1 小时前
【Python量化选股流水线 #04】选股器好不好用?「昨日候选→今日表现」回看验收
开发语言·python·股票数据·股票数据api接口
顽疲1 小时前
java springboot vue 养老系统源码详解:请假 care_leave 销假与床位停费日扣实践
java·vue.js·spring boot
XIAEE2 小时前
一个即时通讯项目是怎么长出来的:(Spring Boot 3 + Vue 3 微前端 + 悟空 IM + LiveKit)
java·spring