零基础入门学习 java 第十节: Java 中的数组
什么是数组? 顾名思义, 就是数据的组合, 把一些相同类型的数放到一组里去.
那为什么要用数组呢? 比如需要统计全班同学的成绩的时候, 如果给班上 50 个同学的成绩信息都命名一个变量进行存储, 显然不方便, 而且在做成绩统计, 如求总分, 平均分, 方差等的时候, 遍历成绩信息又成了一大难题, 这个时候, 你就需要用到数组了.
数组可以很好的解决这两个问题, 数组名只有一个, 只需要使用数组名加下标来访问各个元素的信息即可, 遍历的时候, 由于下标是连续的, 所以访问起来十分方便.
接下来, 就开始正式介绍一下数组吧.
数组是用于存储相同数据类型的集合, 使用数组前需要先声明数组, 声明方式为: int[] a; 这里只声明了变量, 并没有真正初始化为数组. 应该使用 new 运算符创建数组, int[] a = new int[100]; 这里声明了一个大小为 100 的整数型数组, 也就是说, 里面可以存放最多一百个整数. 需要注意的是, 数组的下标是从 0-99, 而不是 1-100, 所以, 数组里的最后一个数是 a[99] 而不是 a[100], 数组定义好之后, 就可以用循环结构来进行赋值操作.
int[] a = new int[100];
新建的数字数组, 里面元素都会被初始化为 0, 如果是逻辑型数组, 则都会初始化为假, 对象型数组则初始化为 null, 当你创建一个字符串数组的时候, 里面元素都是 null 而不是空字符串, 所以如果希望初始化后为空串, 则需要像上述操作那样, 遍历每个元素来赋值空串.
对于 Java 中的数组遍历, 还有一种更简便的方法, 类似于 C# 中的 for each 循环, Java 也有同样的 for each 操作.
for(int element:a)
这段代码会依次打印 a 中的元素, 每个元素占一行, 这里的每次循环, 都会将数组 a 中的一个元素暂存在 element 中, 处理完之后在将下一个元素存放在 element 中. 这样做的好处是, 省略了下标处理, 这样就不存在下标越界的问题了, 看起来也更加简洁. 当然, 如果在循环中需要利用下标进行一些判断或者处理, 就只能需要使用普通的 for 循环来处理了. 两种方法各有优点, 具体情况具体分析即可.
对于数组的初始化, 有几种比较常见的方式.
int[] a={1,2,3,4,5};// 这里不需要使用 new
如果你有学过 C 或者 C++ 的话, 这里的 int[] a= new int[100]; 相当于 C++ 中的 int* a = new int[100]; 也就是说, 数组变量是一个指针, 所以将一个数组变量拷贝给两一个数组变量时, 它们将指向同一个数组. 举个栗子:
int[] a;
这里将输出 10, 也就是说 b 指向的数组的元素被改变了. 如果只想把一个数组里的元素的值拷贝到另一个数组中去的话, 就要使用 Arrays 类的 copyOf 方法, 这个方法有两个参数, 第一个是需要拷贝的数组, 第二个是需要拷贝的长度. 来看一个栗子:
package pers.frank.test;
这样, 会循环输出数组 b 和数组 a 的各个元素.
这里我们将第二个参数设置成了 8, 而数组 b 的长度只有 4, 那结果会怎样呢? 答案显而易见, 会把多的长度用 0 填充.
在前面的栗子里, 我们经常看到 Java 应用程序里带有 String[] args 的 main 方法, 这个参数表名, main 方法接收一个字符串数组, 也就是命令行参数. 举个栗子:
public class Test{
运行结果如下:
下面再讲讲数组排序, Arrays 类中有一个 sort 方法, 用于给数组的元素进行排序, 使用的是快速排序算法, 算是效率比较高的算法了. 这里举个栗子进行演示.
import java.util.Arrays;
最后再说说多维数组吧, 之前的数组只能算是一维数组, 二维数组就像 Excel 的表格那样, 有着行跟列, 如果有了解过矩阵的话, 那对于二维数组应该就不陌生了, 在 Java 中声明二维数组也很简单: int[][] number; 只比一维数组多了一对 []. 同样也需要用 new 来定义数组大小. 当然也可以使用类似于一维数组的初始化方法.
int[][] numbers = {
数组元素的访问同样需要使用两个方括号, 如 numbers1, 这里的值是数字 6, 第一个方括号里代表行号, 第二个方括号里代表列号, 所以这里就是第二行, 第三列的数. 如果需要遍历二维数组的话, 就需要使用两个 for 循环了,
for(int i=0;i
至于更高维度的数组, 一般不会用到, 这里就不多介绍了.
至此本篇讲解完毕, 欢迎大家继续关注!
来源: https://www.2cto.com/kf/201904/801338.html