数组
前言:
在我看来,数组可以类比为数学中的坐标系,一维数组就是坐标轴仅有关于x轴,二维数组就是坐标系有关于x轴和y轴,三维数组就是有关于x,y,z的三维坐标轴,等等以此类推,加入这样的思想,比便于我自己更好的理解关于数组的知识点。
1.一维数组
1.1定义(什么是数组?)
可阅读前言,数组就是一个存在于坐标轴上的点的集合,但是又不太准确,因为此集合只能存放于同类型的数据。
1.2 数组的定义格式
格式一: 数据类型[] 变量名 int[] arry
格式二: 数据类型[] 变量名 int arry[]
Java中的数组必须先初始化,然后才能使用
所谓初始化:就是在内存中,为数组容器开辟空间,并将数据存入容器中的过程。(就是要定义,不能直接写)
动态初始化:只定义数组的长度,由系统给初始值。 格式:数据类型[] 变量名 = new 数据类型[数据长度]; 静态初始化:可以指定数组要存储的元素,系统还会自动计算出该数组的长度。 格式:数据类型[] 变量名 = new 数据类型[]{数据1,数据2}; int[] arry = new int[]{1,2}; 简化格式:数据类型[] 变量名 = {数据1,数据2}; int[] arr = {1,2};
1.3两种初始化的区别对比
-
动态初始化:需要自己添加数组长度
-
静态初始化:需要自己添加数组元素
1.4一维数组遍历
int[] a = {...}; for(int i = 0; i < a.length; x++){ a[i]; }
一维数组的遍历,是对数组(集合)里的元素,一一取出来进行操作。
2.二维数组
1.1定义
可阅读前言,等于数组就是坐标系里的一个区域,而数组里的元素可通过统一的格式来表达各个点,如下图。
当我们对二维数组进行遍历时,就是通过坐标轴上的点一一取出。
1.2二维数组的定义和初始化
二维数组动态初始化
格式:数据类型[][]变量名 = new 数据类型[m][n]
m表示这个二维数组,可以存放多少个一维数组
n表示每一个一维数组,可以存放多少个元素
范例:int [] [] arr = new int[] [];
二维数组静态初始化
格式:数据类型[][]变量 = new 数据类型[][]{{元素1,元素2},{元素1,元素2}};
范例:int [] [] arr = new int [][] {{11,22},{33,44}}
1.3二维数组的遍历
实现思路:
由上图可知,二维数组是由x轴与y轴组成的,那么二维数组进行遍历的时候可看做,将x轴的点取出遍历后存储,再把y轴拿出来遍历后存储。就是将二维数组拆成两个一维数组,其中两个一维数组是包含关系。
//数组一a[i] 数组二a[j] for (int i = 0; i <a.length;i++){ //数组二a[j]是包含在a[i]内的 for(int j = 0; j <arr[i].length;j++){ } } //观察到二维数组的基本格式int [] [] a = new int [] []{{},{}} 【外面的大括号为数组一 里面的两个均并列为数组二,在一个二维数组中,只有一个数组一,可以有很多个数组二】