`
p330294088
  • 浏览: 14531 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
社区版块
存档分类
最新评论

java基础,数组

阅读更多


数组
数组是多个相同类型信息的集合,通过数组可以统一管理这些数据.
数组是一组相同类型的变量,可以通过一个公共的名称来引用,数组可以定义为任何类型,并且可以是一维或多维的,数组中的一个元素是可以通过它的下标来访问的.

一维数组
所谓一维数组,就是一组相同类型数值的集合,本质上是相同类型变量的一个列表.
创建一个数组之前需要声明数组,一维数组声明的方法如下:
 数组类型 数组名[ ] ,例如 int num[ ];
 数组类型[ ] 数组名,例如 int[ ] num;
推荐使用后者, 因为int[ ] 更像一个数组类型

int[ ] monthDays;
尽管这个声明建立了monthDays数组变量,但不存在实际的数组,要把monthDays和一个实际的整型数组链接起来,必须使用new 关键字为其分配内存空间, new关键字是一个分配内存的特殊运算符, 使用new 关键字创建数组的方法如下:
方式一,先声明数组,再分配内存大小:
int[ ] monthDays; // 声明数组
monthDays = new int[12]; //分配12个大小整型变量的内存空间
方式二:
int[ ] monthDays = new int[12]; //声明分配写在一行
这里int指定被分配的数据类型, 12 指定数组的大小, 也指定数组中的元素的个数, 通过new 所分配的数组元素自动初始化为0, 在Java中, 所有数组都是动态分配的, 动态分配的概念, 我们以后会详细讨论.

此时,我们可以想像一下, 数组在内存中的模样
值:
0 0 0 0 0 0 0 0 0 0 0 0

数组中值的下标:
[0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11]

一旦分配了一个数组,就可以通过在方括号中指定元素的下标来访问特定元素.所有数组下标都是以[0]开始, 例如, 下面这条语句把值28赋给monthDays的第二个元素.
monthDays[1] = 28;
下面这条语句显示了存储在下标为3的数组元素中的值
System.out.println(monthDays[3]);
请看示例: ArrayDemo.java
从上面的示例中可以看到数组有个length属性,可以获取数组的长度.

在Java中,可以把数组变量的声明和对数组的初始化结合起来,其过程与初始化简单类型一样,数组的初始化部分是一个由花括号围住的表达式列表,逗号分隔开数组元素的值,此时数组被自动创建得足够大,以容纳在数组初始化时指定的元素,而且不需要使用new, 例如:
int[ ] monthDays = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};  //枚举方式初始化
请看ArrayDemo2.java
Java会进行严格检查以确保没有在数组范围以外尝试存储或引用值.Java的运行时系统将进行检查,

下面我们将输入日期判断是哪一天的例子修改成数组的.请看示例DaysDemo.java

二维数组(多维数组)
二维数组也称数组中的数组,
请看声明方式
int[ ][ ] person; //方式一, 建议使用这种方式声明,看起来更像数组
int person[ ][ ]; //方式二

初始化方式一
规则的二维数组:
int[ ][ ] person = new int[5][4]; //方式一

int[ ][ ] person = new int[5][ ]; //方式二
person[0] = new int[4];
person[1] = new int[4];
person[2] = new int[4];
person[3] = new int[4];
person[4] = new int[4];


此时,person在内存中存在的形式如下:
[0][0] [0][1] [0][2] [0][3]
[1][0] [1][1] [1][2] [1][3]
[2][0] [2][1] [2][2] [2][3]
[3][0] [3][1] [3][2] [3][3]
[4][0] [4][1] [4][2] [4][3]

并且值全部初始化为0

初始化方式二
int[ ][ ] person = new int[ ][ ]{{0,1,2,3},{4,5,6,7},{8,9,10,11},{12,13,14,15},{16,17,18,19}}; //方式四


二维数组,我们可以想像成一张表,有行有列,比如我们可以模拟统计学生分数
如下表:
语文 数学 英文 计算机
95 85 96 100
97 88 57 98
95 87 78 85
98 95 68 58
这里我们可以将一行想像成一个学生的各科的成绩,请看示例PersonDemo2.java

不规则二维数组
二维数组的第二维长度都可以不相同,如:
int[ ][ ] person = new int[5][ ]; //方式三
person[0] = new int[4];
person[1] = new int[4];
person[2] = new int[2];
person[3] = new int[3];
person[4] = new int[3];

请看示例MultArray.java

三维数组
多维数组的定义和使用方法与二维数组类似,请看示例MultArray3.java

数组的常用操作
1. 获取数组的长度, length属性

2. 数组的填充,就是将一个数组的所有元素或其中某些元素用固定的值填充.Arrays类提供的函数fill可以实现对数组的填充功能.请看示例FillArray.java

3. 数组的复制,就是把一个数组里指定范围元素的值复制到另一个数组中去.Java语言提供了Arrays.arraycopy函数进行数组的复制操作,请看示例ArrayCopy.java,复制数组时,记住数组大小范围得控制,否则抛ArrayIndexOutOfBoundsException异常,意思是用非法索引访问数组时抛出的异常.

4. 数组的比较,如果两个数组长度相等,并且相同位置上元素的值也相等,那么这两个数组就是相等的数组,Arrays类提供了一个equals来比较两个数组是否相等,请看示例EqualsArray.java

5. 数组的排序,就是把数组中的元素按照一定的顺序排列,Arrays类提供了数组排序的sort函数.请看示例ArraySort.java

6. 在数组中搜索指定元素,在编程过程中,有时候会需要在某一个数组中搜索某个元素是否存在,Arrays类中函数binarySearch提供了这样的功能,请看示例ArraySearch.java
Arrays.binarySearch(数组, 指定元素); //需要整体排序
Arrays.binarySearch(数组, 开始位置, 结束位置, 指定元素); //需要局部排序
注意: 使用binarySearch方法前必须先排序, 此方法返回指定元素在数组中的索引.

7. 把数组转换为字符串,Arrays类的toString方法函数可以将一个指定的数组转换为一个字符串, 该字符串由数组的元素列表来组成,括在方括号中,并且元素之间使用逗号加空格隔开,请看示例ToString.java

综合练习: 打印杨辉三角

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics