数组的概念

  • 在Java中,数组是一种数据结构,它允许你存储一个固定大小的单一类型元素的集合。数组可以是一维的,也可以是多维的(例如二维、三维等)。

  • 数组是一个固定长度的存储相同数据类型的数据结构,数组中的元素被存储在一段连续的内存空间中。它是最简单的数据结构之一,大多数现代编程语言都内置数组支持。

数组的一些基本概念和特性:

  1. 类型固定:数组中的所有元素都必须是同一类型。
  2. 大小固定:一旦数组被创建,其大小就不能改变。
  3. 索引:数组的每个元素都可以通过索引访问。在Java中,索引从0开始。
  4. 声明:在声明数组时,需要指定数组的类型和名称。
  5. 初始化:可以声明数组时初始化,也可以在声明后单独初始化。

声明数组

在使用一个数组之前,我们需要声明这个数组。声明数组意味着我们需要指定以下内容:

  • 数据类型 :这个数组将要存储怎样一种类型的数据(不同类型占据的内存空间是不同的.如:字符、整型、浮点型等一些数据类型。

  • 名称: 用于标识这个数组并与之交互的变量名

  • 数量:数组的数量,它指定这个数组最多能存储的数据元素的数量

声明数组的基本语法如下:

type[] arrayName;

或者

type arrayName[];

其中 type 是数组元素的类型,arrayName 是数组的名称。

初始化数组

  • 默认情况下,只要由足够的内存,创建的数组会被随机分配一个位置,我们无法获知这个内存位置包含哪些信息。

  • 如果在创建数组时,没有初始化数组元素。这时,我们就访问数组元素的话,会得到一个垃圾值。因此,如果要对一个数组执行计算,我们建议清空数组值或者为其分配初始值。

初始化数组的基本语法如下:

arrayName = new type[size];

其中 size 是数组的大小(即元素的数量)。

示例

int[] numbers; // 声明一个整型数组
numbers = new int[5]; // 初始化数组,大小为5

double[] prices = new double[10]; // 声明并初始化一个双精度浮点型数组
String[] names = {"Alice", "Bob", "Charlie"}; // 声明并初始化一个字符串数组

访问数组元素

数组的遍历使用for循环简单的遍历数组中的所有索引,可以访问数组中的所有元素。

int id[10];
//使用循环为数组分配值
for (int i=0;i<10;i++>){
    printf("\nEnter an id:");
    scanf("%d",%id[i]);
}
//遍历数组中的元素
for( int i=0;i<10;i++){
    printf("\n id[%d]=%d",i,id[i]);
}

通过索引访问数组的元素,索引从0开始。例如:

int firstNumber = numbers[0]; // 获取数组的第一个元素
numbers[1] = 10; // 将数组的第二个元素设置为10

多维数组

多维数组是数组的数组。最常见的是二维数组,可以想象为一个表格。声明和初始化二维数组的语法如下:

int[][] matrix; // 声明一个二维整型数组
matrix = new int[3][4]; // 初始化一个3行4列的二维数组

或者

int[][] matrix = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
}; // 声明并初始化一个二维数组

数组的长度(确定后不能改变)

  • 每个数组都有一个 length 属性,表示数组的长度(即元素的数量)。例如:
int[] numbers = new int[5];
System.out.println("数组的长度: " + numbers.length); // 输出数组的长度

数组的复制

可以使用 System.arraycopy 方法或克隆(clone)来复制数组:

int[] original = {1, 2, 3};
int[] copy = new int[original.length];
System.arraycopy(original, 0, copy, 0, original.length);

// 或者使用克隆
int[] clone = original.clone();

数组是Java中非常重要的数据结构,广泛应用于各种编程任务中。理解数组的声明、初始化、访问和操作是掌握Java编程的基础。

插入元素到数组中

插入尾部
在数组还有足够的空间可供插入时,在数组的尾部插入一个元素是非常容易的。找到数组最后一个元素的索引,并将新插入元素的索引+1即可完成插入。

任意位置插入
通过将该位置后的所有元素的位置向后移动,可在该位置插入元素。

void insert_position(int arr[]){

int i=0,pos,num;
printf("输入要插入的元素值:");
scanf("%d",&num);

printf ("输入要插入元素的索引位置");
scanf("%d",&pos);

for(i=n-1;i>=pos;i--){
    arr[i+1]=arr[i];
}
arr[pos]=num;
n=n+1;//增加已使用索引的总数
}

从数组中删除元素

  • 删除尾部元素

  • 只要数组不为空,删除数组中的元素是很容易的。找到最后一个元素的索引,然后删除该元素即可。

  • 删除任意位置元素

  • 可以在任意索引处删除元素,方法是删除该位置的元素,然后将该位置之后的所有元素向前移动以填充删除的位置。

    void delete_position(int arr[]){
    int i,pos;
    printf("输入要删除元素的索引位置");
    scanf("%d",&pos);
    
    for (i=pos;i<n-1;i++>){
        arr[i]=arr[i+1];
    }
    n=n-1;增加已使用索引的总数
    }