小鑫的JAVA之路(6):数组

数组基础

数组,简单来说就是存放数据里的集合,集合里面的数据叫做元素。数组中元素的个数,常常被称为数组的长度。每个元素在数组中都有一个下标,我们称之为索引,每个数组的索引都是从零开始,所以,元素的长度等于最大索引+1。

一维数组

一维数组的定义:type [ ] arrayName,其中type是数据类型,arrayName是你要定义的数组名,数组名也跟我们之前所讲到的变量的命名规则一样。

数组的初始化

数组的初始化分为两种 ,一种是数组的静态初始化,一种是数组的动态初始化。
静态初始化主要用于数组的所有元素都知道,这样才方便我们进行数组的静态初始化。静态初始化的语法如下:

int [] a = {1,2,3,4,5};

这条语句的含义就是我们定义了一个int 类型的数组,数组里的元素为1,2,3,4,5。因为我们事先知道我们要定义的数组是什么样的,所以我们选择数组的静态初始化。
动态初始化用于我们不知道具体元素的定义,那么实现的原理是什么呢?我们前面讲到数组也是引用类型,所以数组的对象其实是一个存储在栈内存中的物理地址,用于指向堆内存的数据,所以我们动态初始化的目的就是在堆内存开辟一个内存空间用于存储数据。语法如下:

int [] a = new int[10];

这就代表了我们创建了一个叫做a的数组,数组长度为10。可以存放十个数据。

数组中存的数据是有先后顺序的,连续的,我们可以通过下标索引来找到所对应的元素。

数组的遍历

因为数组里的每个元素都有着所对应的下标索引,所以我们想要看到数组里的所有元素的话,我们就可以采用前面讲到的for循环来得到一个数组里的所有元素。代码如下:

int []a = {1,2,3,4,5,6};
//定义一个数组
for(int i = 0;i<a.length;i++){
System.out.println(a[i]);
//输出数组中的元素
}

首先我们讲解一下这个for循环的原理,我们先定义了一个为0的变量,为什么为0呢?因为我们的下标是从0开始的啊,所以我们使用0,那么循环的控制条件是什么呢?是我们数组的长度,也就是我们数组里数据的个数,当我们数组里的元素都被读取完了,那么我们的循环也就停止了,然后用i++来控制我们循环的次数。
有些童鞋可能会问了,为什么不用<=length呢?所以我们这里要讲到一个异常,
下标越界异常。这个异常是因为什么引起的呢?是因为你的下标超过了你的数组长度,最后一个元素都被你读取完了,那么又到哪里去读取下一个元素呢?我们数组里的最大索引是数组的长度减去1,所以如果我们条件判断语句使用<=的话,那么肯定会出现下标异常。

多维数组

数组的概念就不过多赘述了
多维数组的静态初始化:

int a [][]={{1,2},{3,4},{5,6}}; //这是一个三行二列的数组

多维数组的动态初始化:

int a [][] = new [3][2];//这是一个三行二列的数组

二维数组有两个下标,一个下标控制行,一个下标控制列,如果我们遍历的时候只使用其中一个下标那么我们得到的肯定是一个存储在栈内存中的物理地址,只有同时使用两个下标才会精确的定义一个数组里的元素。所以二维数组的遍历语法如下:

int a [][] = {{1,2},{3,4},{5,6}};
for(int i = 0;i<a.length;i++){
//获取行的值
  for(int j = 0;j<a[i].length;j++){
  //获取列的值
  System.out.println(a[i][j]);
  }
  System.out.println();
  //用于隔开行列的值
}

猜你喜欢

转载自blog.csdn.net/weixin_49209692/article/details/107880567