当前位置: 首页 > news >正文

Java 数组相关知识点

一、数组的基本概念

数组是一种用于存储多个相同类型数据的集合。在 Java 中,数组的大小是固定的,一旦创建后无法改变其大小。

二、数组的声明与初始化

1. 声明

类型[] 数组名;

例如:

int[] numbers; // 声明一个整型数组
String[] names; // 声明一个字符串数组

2. 初始化

静态初始化

在声明数组的同时直接赋值:

int[] numbers = {1, 2, 3, 4, 5};
String[] names = {"Alice", "Bob", "Charlie"};
动态初始化

先声明数组,然后通过new关键字分配内存:

int[] numbers;
numbers = new int[5]; // 分配长度为5的数组

三、数组的访问

通过索引来访问数组中的元素。索引从0开始,到length-1结束。

int[] numbers = {1, 2, 3, 4, 5};
System.out.println(numbers[0]); // 输出1
numbers[0] = 10; // 修改数组中的元素

四、数组的长度

数组有一个length属性,用于获取数组的长度(即元素的个数)。

int[] numbers = {1, 2, 3, 4, 5};
System.out.println(numbers.length); // 输出5

五、遍历数组

可以使用循环来遍历数组中的每个元素。

使用for循环

int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) {
    System.out.println(numbers[i]);
}

使用增强型for循环

int[] numbers = {1, 2, 3, 4, 5};
for (int num : numbers) {
    System.out.println(num);
}

六、多维数组

Java支持多维数组,即数组的元素本身也是数组。

声明和初始化

int[][] matrix = new int[3][3]; // 3x3的二维数组
int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

访问元素

int[][] matrix = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
System.out.println(matrix[0][0]); // 输出1
matrix[0][0] = 10; // 修改元素

七、数组的默认值

在动态初始化数组时,数组中的元素会有默认值:

  • 数值类型(如intdouble)的默认值是0

  • 布尔类型(boolean)的默认值是false

  • 引用类型(如Object)的默认值是null

八、数组的常用函数

1. Arrays.toString()

将数组转换为字符串,方便打印和调试。

示例代码

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        System.out.println(Arrays.toString(numbers)); // 输出: [1, 2, 3, 4, 5]
    }
}
2. Arrays.sort()

对数组进行排序,默认按升序排列。

示例代码

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = {5, 3, 1, 4, 2};
        Arrays.sort(numbers); // 升序排序
        System.out.println(Arrays.toString(numbers)); // 输出: [1, 2, 3, 4, 5]
    }
}
3. Arrays.copyOf()

创建一个新数组,并将原数组的内容复制到新数组中。可以指定新数组的长度。

示例代码

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3};
        int[] copy = Arrays.copyOf(numbers, numbers.length * 2); // 新数组长度为原数组的两倍
        System.out.println(Arrays.toString(copy)); // 输出: [1, 2, 3, 0, 0, 0]
    }
}
4. Arrays.copyOfRange()

创建一个新数组,并将原数组的指定范围的内容复制到新数组中。

示例代码

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        int[] subArray = Arrays.copyOfRange(numbers, 1, 4); // 复制从索引1到3的元素
        System.out.println(Arrays.toString(subArray)); // 输出: [2, 3, 4]
    }
}
5. Arrays.equals()

直接使用==比较两个数组时,比较的是它们的引用是否相同,而不是内容是否相同。要比较内容,可以使用Arrays类的equals方法:

示例代码

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] array1 = {1, 2, 3};
        int[] array2 = {1, 2, 3};
        int[] array3 = {1, 2, 4};

        System.out.println(Arrays.equals(array1, array2)); // 输出: true
        System.out.println(Arrays.equals(array1, array3)); // 输出: false
    }
}
6. Arrays.fill()

将数组的指定范围或整个数组填充为指定的值。

示例代码

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = new int[5];
        Arrays.fill(numbers, 10); // 将整个数组填充为10
        System.out.println(Arrays.toString(numbers)); // 输出: [10, 10, 10, 10, 10]

        Arrays.fill(numbers, 1, 3, 20); // 将索引1到2的范围填充为20
        System.out.println(Arrays.toString(numbers)); // 输出: [10, 20, 20, 10, 10]
    }
}
7. Arrays.binarySearch()

在已排序的数组中使用二分查找法查找指定元素的索引。如果数组未排序,结果可能不准确。

示例代码

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        Arrays.sort(numbers); // 确保数组已排序
        int index = Arrays.binarySearch(numbers, 3); // 查找元素3的索引
        System.out.println(index); // 输出: 2
    }
}
8. System.arraycopy()

将一个数组的内容复制到另一个数组中。可以指定源数组、目标数组、起始位置和复制长度。

详细介绍篇:详细介绍Java的方法System.arraycopy()-CSDN博客

示例代码

public class Main {
    public static void main(String[] args) {
        int[] src = {1, 2, 3, 4, 5};
        int[] dest = new int[10];

        System.arraycopy(src, 0, dest, 0, src.length); // 将src的内容复制到dest
        System.out.println(Arrays.toString(dest)); // 输出: [1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
    }
}
9. Arrays.setAll()

使用给定的函数生成数组的每个元素。

示例代码

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = new int[5];
        Arrays.setAll(numbers, i -> i * i); // 使用函数 i -> i * i 生成数组元素
        System.out.println(Arrays.toString(numbers)); // 输出: [0, 1, 4, 9, 16]
    }
}
10. Arrays.parallelSort()

对数组进行并行排序,适用于大数组,可以利用多核处理器提高排序效率。

示例代码

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int[] numbers = {5, 3, 1, 4, 2};
        Arrays.parallelSort(numbers); // 并行排序
        System.out.println(Arrays.toString(numbers)); // 输出: [1, 2, 3, 4, 5]
    }
}

九、数组的边界检查

在访问数组元素时,如果索引超出范围,会抛出ArrayIndexOutOfBoundsException异常。因此,在编写代码时需要注意边界检查。

十、数组的动态特性

Java数组的大小在创建时是固定的,无法动态改变大小。如果需要动态调整大小,可以使用ArrayList等集合类。

常用的数组函数总结

函数描述
Arrays.toString(array)将数组转换为字符串表示
Arrays.sort(array)对数组进行排序
Arrays.copyOf(array, newLength)拷贝数组,可以指定新长度
Arrays.equals(array1, array2)比较两个数组内容是否相等
System.arraycopy(src, srcPos, dest, destPos, length)数组拷贝

希望这些知识点和常用的函数总结对你理解 Java 数组有所帮助!

 

相关文章:

  • 用不了 Manus ?其实你能用 Llama或DeepSeek 做个自己的 AI Agent
  • 剑指 Offer II 065. 最短的单词编码
  • 没有最好的,只有最合适的:重新认识测试工具的价值
  • SAP S/4HANA Cloud Private Edition 2023 FPS03:AI助力业务创新
  • 洛谷 P2010 [NOIP 2016 普及组] 回文日期 Python
  • RocketMQ 详细教程(Spring Boot Spring Cloud Alibaba)
  • 靶场练习ing
  • 【A2DP】蓝牙A2DP协议剖析:从架构到规范
  • Linux进程基础知识
  • APIC 是什么?深度解析高级可编程中断控制器
  • Redis-配置文件
  • 【论文精读】Deformable DETR:用于端到端目标检测的可变形 Transformer
  • [Ai 力扣题单] 数组基本操作篇 27/704
  • 深陷帕金森困境,怎样重燃生活信心?
  • 基于 Vue 的Deepseek流式加载对话Demo
  • 网络安全基础知识:从零开始了解网络安全
  • 【网络协议】应用层协议HTTPS
  • C语言学习笔记-进阶(10)自定义类型:结构体
  • # linux有哪些桌面环境?有哪些显示服务器协议及显示服务器?有哪些用于开发图形用户界面的工具包?
  • 消息队列MQ使用场景有哪些?
  • 响应式学校网站模板下载/国内重大新闻十条
  • 如何做网站打广告/网站页面优化包括
  • 做微商哪个网站好/百度模拟点击软件判刑了
  • 西安市网站建设/设计公司网站
  • 网站建设工作分解结构词典/做推广网络
  • 青岛市网站制作/网站搜索排名