数组

多个相同类型数据按一定顺序排列的集合,这个集合具有统一的命名,并通过下标对这些数据进行编号管理

数组的特点

  • 数组本身是引用类型,详细描述查看:****

  • 创建数组对象会在内存中开辟一段连续的空间,而数组名所指代的引用值,就是该连续空间的首地址。

  • 数组的长度一旦确定,就无法修改

  • 我们可以通过下标的方式调用指定位置的元素,通过指针的移动来遍历,速度很快

  • 数组的下标从0开始,长度为n的数组,合法下标取值范围:0→n-1

  • 数组内的元素会根据其本身的数据类型进行默认初始化

一维数组

声明方式:

数据类型 数组名[]数据类型[] 数组名

初始化方式:

动态初始化:分配空间和赋值操作分开进行

int[] i=new int[2]int i[]=new int[2]

静态初始化:在定义数组的同时就赋值

int i[]=new int[]{1,2,3}int i={1,2,3}

public class Test{
  public static void main(String args[]){
    int[] s;
    s = new int[10];
    for ( int i=0; i<10; i++ ) {
      s[i] =2*i+1;
      System.out.println(s[i]);
    }
  }
}

当数组中存储的是原生类型时的内存解析:

image

当数组中存储的是引用类型时的内存解析:
image

当数组引用和实际数组断开引用关系,实际数组的长度依旧不变,但是变成了无效数组(垃圾),只能等待垃圾回收器进行回收

多维数组

多维数组的声明方式和一维数组的声明方式相似,几维就有几个[]

多维数组就是多个一维数组的套娃,每个一维数组的长度可以不同。因此在Java底层机制上来说,没有多维数组的概念。

声明方式:这里以二维数组举例

int[][] iint i[][]

动态初始化1:

int[][] arr = new int[3][2]

表达的意思:该二维数组中有三个组件(一维数组),每个一维数组中有两个元素

给第一个组件中的第一个元素赋值:arr[0][0]=23

动态初始化2:

int[][] arr=new int[3][]

表达的意思:该二维数组中有三个组件(一维数组),每个一维数组只是声明了,没有初始化(会默认初始化为null)

分别给三个组件进行初始化:

arr[0]=new int[3];arr[1]=new int[1];arr[2]=new int[2];

静态初始化

int[][] arr = new int[][]{{3,8,2},{2,7},{9,0,1,6}};

注意特殊写法情况:int[] x,y[]; x是一维数组,y是二维数组

这种定义是允许的,这样定义的i没有进行初始化,j初始化了int[] i,j[]=new int[2][3];

增强工具类Arrays

具体说明查看:Arrays类--待完善

posted @ 2024-03-22 13:08  杰尼龟的小龟壳  阅读(12)  评论(0)    收藏  举报