1.概述:数组(Array),是多个相同类型数据按一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。
2.数组的常见概念
1.数组名
2.下标(或索引)
3.元素
4.数组的长度:(元素的个数)
3.数组的特点:
1.数组是有序排列的
2.组属于引用数据类型的变量。数组的元素既可以是基本数据类型,也可以是引用数据类型
3.创建数组对象会在内存中开辟一整块连续的空间
4.数组的长度一旦确定,就不能修改。
4.数组的分类;
1.按照维数:一维数组、二维数组 。。。
2.按照数组元素的类型。基本数据类型元素的数组、引用数据类型元素的数组
5.一维数组的使用
1.一维数组的声明和初始化
声明:类型[] 变量名;
初始化方式一(静态初始化):变量名 = new 类型[]{元素1,元素2,...};(数组的初始化和数组元素的赋值操作同时进行)
初始化方式二(动态初始化): 变量名 = new 类型[数组长度];(数组的初始化和数组元素的赋值操作分开进行)
2.如何调用数组的指定位置的元素
通过角标的方式调用(从0开始,到长度-1结束)
3.如何获取数组的长度
数组名.length
4.如何遍历数组
for (int i = 0;i < names.length;i++){
System.out.println(names[i]);
}
5.数组元素的默认初始化值
1.基本数据类型:
整型数组默认的值:0
浮点型数组默认的值:0.0
char型数组默认的值:0或'u0000',而非'0'
Boolean型数组默认的值:false
2.引用数据类型:数组默认的值:null
6.数组的内存解析
栈:存放局部变量
堆:存放 new 的内容
6.多维数组的使用
规定:二维数组分为外层数组的元素,内层数组的元素
int[][]arr = new int[4][3];
外层元素:arr[0], arr[1]等
内层元素:arr[0][0] , arr[1][2]等
1.数组元素的默认初始化值
1.针对于初始化方式一:比如:int[][] anr = new int[4][3];
外层元素的初始化值为:地址值
内层元素的初始化值为:与一维数组初始化情况相同
2.针对于初始化方式二:比如:int[][]arr = new int[4][];
外层元素的初始化值为:null
内层元素的初始化值为:不能调用,否则报错
案例(一维数组)
Scanner scan = new Scanner(System.in);
//获取学生人数
System.out.println("请输入学生人数: ");
int studentCount = scan.nextInt();
//建立数组
int[] scores = new int[studentCount];
//将成绩写入数组
int maxScores = 0;
System.out.println("请输入" + studentCount + "个学生成绩: ");
for (int i = 0;i < scores.length;i++){
scores[i] = scan.nextInt();
if (maxScores < scores[i]) {
maxScores = scores[i];
}
}
//求出最大成绩
//输出结果
char level;
for (int i = 0;i < scores.length;i++){
if (maxScores - scores[i] <= 10){
level = 'A';
}else if (maxScores - scores[i] <= 20){
level = 'B';
}else if (maxScores - scores[i] <= 30){
level = 'C';
}else {
level = 'D';
}
System.out.println("student " + i + " scores is " + scores[i] + ",grade is " + level);
}
案例(多维数组)
//1.声明并初始化二维数组
int[][] yangHui = new int[10][];
//2.给数组的元素赋值
for (int i = 0;i < yangHui.length;i++){
yangHui[i] = new int[i + 1];
//2.1给首末元素赋值
yangHui[i][0] = 1;
yangHui[i][i] = 1;
//2.2给每行的非首末元素赋值
if (i > 1){
for (int j = 1;j < yangHui[i].length - 1;j++){
yangHui[i][j]= yangHui[i-1][j-1] + yangHui[i-1][j];
}
}
}
//3.遍历二维数组
for (int i = 0;i < yangHui.length;i++){
for (int j = 0;j < yangHui[i].length;j++){
System.out.print(yangHui[i][j] + " ");
}
System.out.println();
}



