数组
数组:相同数据类型的数据的组合。
1.一维数组
如:
int score = 72;
int score = 90;
int score = 58;
使用数组:
1. 静态初始化:在声明并初始化与给数组相应的元素赋值操作同时进行。
int[] score1 = new int[]{72, 90, 58};
//int[] score1 = {72, 90, 58};
2. 动态初始化:在声明并初始化与给数组相应的元素赋值操作分开进行。
int score2 = new int[3];
score[0] = 72;
score[1] = 90;
score[2] = 58;
注:数组长度一旦创建后数组长度不可变。
声明数组的错误写法:
1)String names = new String[5]{“AA”,”BB”,”CC”};
2)int a[10];
3)int i = new int[];
另外
1. 对于byte、short、int、long数组元素值默认为0
2. 对于float、double数组元素值默认为0.0
3. 对于char数组元素值默认为空格
4. 对于boolean数组元素值默认为false
5. 对于引用类型的变量构成的数组而言,默认初始化为null,以String为例
2.二维数组
- 静态初始化:
int[][] scores;
scores = new int[][]{{1, 2,3},{3, 4, 5},{6}};
- 动态初始化:
String[][] names;
names = new String[3][2];//动态初始化之一
或者
names = new String[4][];//动态初始化之二(不指定二维的长度)
names[0] = new String[5];
names[1] = new String[4];
namse[2] = new String[7];
错误的初始化:
names = new String[][];
names = new String[][5];
都是未指定第一维长度。
Q:二维数组如何遍历?
for(int m = 0;m < score.length;m++ ){
for(int n = 0;n < score[m].length;n++){
System.out.println(score[m][n]);
}
}
内存结构
举例:
一维数组练习
/*
从键盘读入学生成绩,找出最高分,并输出学生成绩。
成绩>=最高分-10 等级为A
成绩>=最高分-20 等级为B
成绩>=最高分-30 等级为C
其余 等级为D
提示:先读入学生人数,根据人数创建int数组,存放学生成绩
*/
public class TestStudentScore {
public static void main(String[] args) {
// 1,创建Scanner的对象,并从键盘获取学生的个数n
Scanner s = new Scanner(System.in);
System.out.println("请输入学生的个数:");
int count = s.nextInt();// count记录学生的个数
// 2,根据输入的学生个数n,创建一个长度为n的int型数组
int[] scores = new int[count];
int maxScore = 0;
// 3,依次从键盘获取n个学生的成绩,并赋给相应的的数组元素,并获取n个学生中的最高分
System.out.println("请输入" + count + "个数学生成绩:");
for (int i = 0; i < scores.length; i++) {
int score = s.nextInt();// 依次从键盘获取学生的成绩
scores[i] = score;
if (scores[i] > maxScore) {
maxScore = scores[i];
}
}
System.out.println("最高分为:" + maxScore);
// 4,遍历学生成绩的数组,并根据学生成绩与最高分的差值,赋予相应的等级,并输出
for (int i = 0; i < scores.length; i++) {
char level;
if (scores[i] >= maxScore - 10) {
level = 'A';
} else if (scores[i] >= maxScore - 20) {
level = 'B';
} else if (scores[i] >= maxScore - 30) {
level = 'C';
} else {
level = 'D';
}
System.out.println("Student " + (i + 1) + " score is " + scores[i]
+ " level is " + level);
}
}
}