数组
数组是多个相同类型信息的集合,通过数组可以统一管理这些数据.
数组是一组相同类型的变量,可以通过一个公共的名称来引用,数组可以定义为任何类型,并且可以是一维或多维的,数组中的一个元素是可以通过它的下标来访问的.
一维数组
所谓一维数组,就是一组相同类型数值的集合,本质上是相同类型变量的一个列表.
创建一个数组之前需要声明数组,一维数组声明的方法如下:
数组类型 数组名[ ] ,例如 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
综合练习: 打印杨辉三角
发表评论
-
异常处理
2010-04-25 19:33 968异常机制异常机制是指当程序出现错误后,程序如何处理。具体来说, ... -
抽象类与接口
2010-04-25 19:31 807抽象类(abstract class) 抽象类往往用来表征我 ... -
类与继承
2010-04-25 19:28 782类的继承Java引人注目的 ... -
访问控制
2010-04-25 19:27 733访问控制包的使用类的访问控制成员的访问控制 包的使用所谓包, ... -
java类
2010-04-25 18:14 982在学习函数这章之前,我们有必要了解一下类的知识. 在前面我们 ... -
String字符串
2010-04-21 13:38 2439字符串在前面我们已经知道字符串就是用双引号包起来的内容,我们一 ... -
java基础,程序控制语句
2010-04-21 11:40 1931程序控制语句Java的程序控制语句分为几类:选择:允许程序根据 ... -
java基础,运算符
2010-04-21 11:38 2121Java运算符在Java中,运算符可以分为以下四组: 算术运 ... -
java基础,java的基本数据类型
2010-04-21 10:56 1363•常量就是数据,在程序执行过程中,值不能改变的数据.Ja ...
相关推荐
java基础 数组
java 面向对象 数组对象的基本概念 希望对你们有所帮助
Educoder题目:Java入门 - 数组基础答案解析
Educoder题目:Java入门 - 数组进阶答案解析
02-Java基础(数组-常见操作-遍历
.java文件,对java基础的数组部分的进制类型转换部分的说明。
03-Java基础(数组-内存空间的划分
java语言中数组的基础教程学习资料适用新手java语言中数组的基础教程学习资料适用新手java语言中数组的基础教程学习资料适用新手java语言中数组的基础教程学习资料适用新手java语言中数组的基础教程学习资料适用新手...
Java array 数组用法源码集,比如测试数组、划分成绩等级、从方法中返回数组、二分查找法、求二维数组的长度、锯齿数组、处理二维数组等,相信通过这些基础的数组操作实例,会对你了解Java中的数组有很好的帮助作用...
07-Java基础(数组-常见问题)
06-Java基础(数组-内存图解)
java实现数组从小到大排序,输出为数组。可以直接拿来用,注释清楚,可读性强,适用于基础练习,课堂作业等
Java基础之数组练习2
06-Java基础(数组-常见操作-排序位置置换代码提取
对于新接触Java的学员来说,Java基础中必学数组和循环结构,这里有分享,想学的朋友可以看看此文章,学习更多Java知识。
问题2:在上例的基础上,如果要求统计出有多少人达到了平均分,并输出达到平均分的学生成绩呢? 采用另一种变量结构,能存放批量数据——数组。 数组的基本概念 数组是一种数据结构,在内存中连续存放。 用来存放...
详细描述了java基础中的数组与方法的应用技术,以及面向对象的过程思想,有助于java初学者的入门学习。
java基础之一维数组元素的插入,java基础之一维数组元素的插入
培训-Java基础-数组&集合.ppt 培训用的ppt 主要讲了java数组和集合 供需要的朋友使用
java数组 Java 语言中提供的数组是用来存储固定大小的同类型元素。 如:可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量...本资源是java数组基础教程,适合自学的朋友,有兴趣可以下载学习参考。