创建数组 (1)
▪ 数组是相同类型数据的有序集合.
– 相同类型的若干个数据,按照一定先后次序排列组合而成。
– 其中,每一个数据称作一个数组元素 – 每个数组元素可以通过一个下标来访问它们.
▪ 数组特点:
– 其长度是确定的。数组一旦被创建,它的大小就是不可以改变的。
– 其元素必须是相同类型,不允许出现混合类型。
– 数组中的元素可以是任何数据类型,包括基本类型和引用类型。
▪ 数组属引用类型
– length, elements of the array
数组概述
• 数组是一个变量,存储相同数据类型的一组数据
声明一个变量就是在内存空间划出一块合适的空间
声明一个数组就是在内存空间划出一串连续的空间
数组概述
• 数组只有一个名称,即标识符
• 元素下标标明了元素在数组中的位置,从0开始
• 数组中的每个元素都可以通过下标来访问
• 数组长度固定不变,避免数组越界
如何使用数组
▪ 使用数组四步走:
1、声明数组: int[ ] a;
▪ 声明数组: 告诉计算机数据类型是什么
int[ ] score1; //Java成绩
int score2[ ]; //C#成绩
String[ ] name; //学生姓名
数据类型 数组名[ ] ;
数据类型[ ] 数组名 ;
2、分配空间 :a = new int[5];
▪ 分配空间: 告诉计算机分配几个连续的空间
score = new int[30];
avgAge = new int[6];
name = new String[30];
▪声明数组并分配空间
数据类型[ ] 数组名 = new 数据类型[大小];
3、赋值: a [0] = 8;
▪ 赋值:向分配的格子里放数据
score[0] = 89;
score[1] = 79;
score[2] = 76;
//太麻烦了
▪ 方法1: 边声明边赋值
int[ ] score = {89, 79, 76};
int[ ] score = new int[ ]{89, 79, 76};
▪ 方法2:动态地从键盘录入信息并赋值
Scanner input = new Scanner(System.in);
for(int i = 0; i < 30; i ++){
score[i] = input.nextInt();
}
4、处理数据: a [0] = a[0] * 10;
– 对数据进行处理:计算5位学生的平均分
int [ ] score = {60, 80, 90, 70, 85};
double avg;
avg = (score[0] + score[1] + score[2] + score[3] + score[4])/5;
int [ ] score = {60, 80, 90, 70, 85};
int sum = 0;
double avg;
for(int i = 0; i < score.length; i++){
sum = sum + score[i];
}
avg = sum / score.length
使用数组求平均分:
public static void main(String[ ] args) {
int[] scores = new int[5]; //成绩数组
int sum = 0; //成绩总和
Scanner input = new Scanner(System.in);
System.out.println("请输入5位学员的成绩:");
for(int i = 0 ; i < scores.length ; i++;){
scores[i] = input.nextInt();
sum = sum + scores[i] ; //成绩累加
}
System.out.println("平均分是 : " + (double)sum / scores.length);
}
常见错误1
public class ErrorDemo1 {
public static void main(String[ ] args){
int[ ] score = new int[ ] ; //编译出错,没有写明数 组的大小
score[0] = 89;
score[1] = 63;
System.out.println(score[0]);
}
}
常见错误2
public class ErrorDemo2 {
public static void main(String[ ] args) {
int[ ] scores = new int[2];
scores[0] = 90;
scores[1] = 85;
scores[ 2 ] = 65; // 编译出错,数组 越界
System.out.println(scores[2]);
常见错误3
public static void main(String[ ] args){
int[ ] score = new int[5];
score = {60,80,90,70,85};
int[ ] score2; } //编译出错,创建数组并 赋值的方式必须在一条 语句中完成
score2 = {60,80,90,70,85};
}
一维数组的声明
▪ 一维数组的声明方式有两种:
type[] arr_name;
type arr_name[];
▪ 例如:
int[] intArrays;
int intArrays[];
double[] doubleArrays;
Person[] pArrays;
String[] strArrays;
二维数组
二维数组举例:
int [][] a = {{1,2},{3,4,0,9},{5,6,7}};
Java中多维数组不必须是规则矩阵形式
二维数组可以看成以数组为元素的数组。
例如: int [][] a= {{1,2},{3,4,5,6},{7,8,9}};
Java中多维数组的声明 和初始化应按从高维到 低维的顺序进行,
例如:
总结
▪ 一维数组入门
– 数组的特点:长度固定,连续空间,存储同一种类型数据
– 数组内存分配图
– for-each循环:简单、主要用于遍历操作
▪ 一维数组的应用
– 数组优缺点
▪ 优点:按照索引查询效率高
▪ 缺点:添加删除元素效率低;按照内容查询效率低(无序)
– 冒泡排序:基本的排序算法,理解排序规则,实现并完善排序代码
– 数组类型做形参
▪ 二维数组:
– 实质是每个元素是一维数组的一维数组;二维数组内存分配图